J'ai besoin d'accéder aux fichiers "non multimedias" dans la carte SD de ma tablette, pour ce faire j'utilise le code suivante avec API level 29 :
Code : Tout sélectionner
if (Application.platform == RuntimePlatform.Android)
{
AndroidJavaObject storageHelper = new AndroidJavaObject("com.picovr.androidhelper.StorageHelper");
//Get current activity
AndroidJavaObject activityContext = new AndroidJavaClass("com.unity3d.player.UnityPlayer")
.GetStatic<AndroidJavaObject>("currentActivity");
//Must call "init" method before call other interface.
storageHelper.Call("init", activityContext);
//Call the interface.
string sdCardPath = storageHelper.Call<string>("getSDCardPath");
if (!string.IsNullOrEmpty(sdCardPath))
{
folderPath = System.IO.Path.Combine(sdCardPath, "folderTest");
if (!Directory.Exists(folderPath))
{
try
{
Debug.Log(debugHeader + "create folder : " + folderPath);
Directory.CreateDirectory(folderPath);
}
catch (System.Exception e)
{
Debug.LogError(debugHeader + "create folder error : " + e.Message);
}
}
}
}
Code : Tout sélectionner
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" android:minSdkVersion="30" />
<application>
<activity android:name="com.unity3d.player.UnityPlayerActivity"
android:theme="@style/UnityThemeSelector"
android:requestLegacyExternalStorage="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>
</application>
</manifest>
Je me retrouve avec deux situations différentes:
Sous Android 11:
J'accède bien aux fichiers multimedias mais pas les autres.
Dans ce cas de figure je suis obligé d'aller dans les paramètres tablette /application/MonApplication/autorisations/stockage pour venir cocher "Autoriser la gestion de tous les fichiers" à la place de "Autoriser l'accès aux fichiers multimédias uniquement"
Ensuite mon application fonctionne parfaitement.
Sous Android 13:
Impossible d'accéder à la carte SD
Auriez vous une méthode simple qui me permettrai d'accéder aux fichiers "non multimédias" dans la carte SD quelque soit la version d'Android ?