Android 6.0 autorisations et de montage OBB

J'ai un problème avec les autorisations sur Android 6.0 et supérieur.

Le jeu que je suis en train de travailler sur a été à l'aide de la WRITE_EXTERNAL_STORAGE autorisation. Sur Android 6.0 et supérieur de l'alerte qui demande à l'utilisateur pour lui permettre devait être affiché.

J'ai reçu une demande pour se débarrasser de cette alerte, ce qui signifie que le jeu ne peut pas utiliser WRITE_EXTERNAL_STORAGE plus.

Techniquement le jeu n'est pas de l'écriture et de la lecture, le stockage externe n'importe où maintenant. Tous les jets de sauvegarde et les fichiers mis en cache sont stockées dans l'application répertoire spécifique (/storage/emulated/0/Android/data/com.de l'entreprise.productname)
Mais, le jeu a à lire (et parfois en téléchargement) le fichier OBB, qui est stocké dans /storage/emulated/0/Android/obb/com.de l'entreprise.productname répertoire.

Le jeu dispose d'un accès à ce répertoire, même sans WRITE_EXTERNAL_STORAGE ou READ_EXTERNAL_STORAGE sur les appareils:

  • Motorola Nexus 6
  • LG Nexus 5

Mais il semble qu'il n'a pas na accès à ce répertoire:

  • Samsung Galaxy S5, S6 et S7
  • Nvidia Shield tablet

Je l'ai vérifié, même à l'aide de l'Alpha de Tests afin de simuler de télécharger le jeu à partir de la boutique.

Lorsque l'autorisation pour le Stockage (via les Paramètres de l'Application), puis tout fonctionne très bien.

Comment l'OBB est monté?

Le Moteur Unreal engine 4, que j'utilise, soit à l'aide de la C fonction open() pour gérer le fichier OBB:

int32 Handle = open(LocalPath, O_RDONLY);

Où LocalPath est un chemin complet vers le fichier obb: /storage/emulated/0/Android/obb/com.de l'entreprise.nom du produit/main.10003.com.de l'entreprise.productname.obb

Les questions sont:

  1. Le jeu doit-il en LECTURE/ÉCRITURE _EXTERNAL_STORAGE pour lire et télécharger le fichier OBB?
  2. Si oui, alors comment puis-je me débarrasser de l'alerte, qui demande à l'utilisateur les autorisations.
  3. Si non, alors pourquoi Samsung Galaxy S série faire de tels troubles?
received a request to get rid of this alert. Idiot demande. Dites-leur! Les laisser aller dans les Paramètres de votre application swich la permission.
Comment êtes-vous montage de OBB et ce que vous êtes de passage à UE4 comme LocalPath?
Aussi, quelle version(s) d'Android sont en cours d'exécution sur ces différents dispositifs?
Tous ces appareils tournant sous Android 6.0.1. Un chemin local est un const char* pointant vers /storage/emulated/0/Android/obb/com.de l'entreprise.nom du produit/main.10003.com.de l'entreprise.productname.obb Exactement, c'est une combinaison de la getExternalStorageDirectory() + "/Android/obb/" + PackageName Si Vous avez accès à UE4 github, Vous pouvez vérifier le code source github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/... (MountOBB fonction)

OriginalL'auteur zompi | 2016-07-13