recherche

Maison  >  Questions et réponses  >  le corps du texte

android6.0 用户关掉sd卡读取权限的情况下, 还能做到手机缓存么?

6.0以前感觉只要在manifest中申明了权限就可以用数据库、硬盘缓存、sp这些来做数据缓存。但是6.0后需要动态申请权限, 并且用户可以随时关掉这些权限。 那么在用户关掉或者没有允许sd卡读取权限的情况下,还能做数据缓存么(没有开启权限的话,file总是会创建失败)? 如果能的话,那该怎么做呢?

PHP中文网PHP中文网2815 Il y a quelques jours487

répondre à tous(2)je répondrai

  • 高洛峰

    高洛峰2017-04-17 18:00:29

    Frère, tu t'es trompé.

    Vous pouvez consulter la documentation officielle.

    L'espace de stockage Android est divisé en deux parties : Internal storage et External storage

    Stockage interne

    Toujours disponible, aucune autorisation supplémentaire requise, les fichiers ici ne sont accessibles que par notre application par défaut.
    Vous pouvez obtenir le répertoire interne de l'application via la méthode getFilesDir() sous Contexte et obtenir le répertoire de cache interne via getCacheDir().

    Stockage externe

    Cet espace peut ne pas être toujours disponible en raison du montage d'un stockage externe. Cependant, de plus en plus de fabricants n'autorisent plus les utilisateurs à utiliser des cartes SD pour augmenter la capacité, mais fixent plutôt l'espace de stockage de l'appareil. Ces espaces de stockage seront toujours divisés en stockage interne et stockage externe, mais dans ce cas, le stockage externe est essentiellement. est toujours disponible, vous pouvez également utiliser

    Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)

    pour déterminer si le stockage externe est monté.

    Vous pouvez obtenir le répertoire externe de l'application via la méthode getExternalFilesDir() sous Contexte et obtenir le répertoire de cache externe via getExternalCacheDir().

    Ces deux répertoires se trouvent sous 外置储存空间目录/Android/data/你的App的包名/. Vous n'avez pas besoin d'autorisations supplémentaires pour y lire et écrire (API 18 ou supérieur). Si votre application minSdkVersion <= 18, il est recommandé de lire et d'écrire. dans AndroidManifest.xml Ajoutez cette autorisation :

    <uses-permission
            android:name="android.permission.WRITE_EXTERNAL_STORAGE"
            android:maxSdkVersion="18"/>

    Cependant, si vous lisez et écrivez des fichiers en dehors de ce répertoire, vous avez besoin d'autorisations d'exécution (par exemple, si vous souhaitez écrire un fichier journal dans le répertoire racine du stockage externe)

    De nombreuses applications ou SDK tiers liront et écriront le cache dans le répertoire racine du stockage externe, ce qui vous conduira à un trouble obsessionnel-compulsif chaque minute en regardant toutes sortes de répertoires étranges dans le répertoire racine du stockage externe de votre téléphone. Carte SD, c'est vraiment frustrant ? Cependant, je pense qu'à mesure que la part des appareils Android dotés de la version 6.0 et supérieure continue d'augmenter, ce problème sera progressivement résolu.

    J'espère que tous les collègues développeurs d'applications Android utiliseront les méthodes getExternalFilesDir() et getExternalCacheDir() autant que possible pour offrir aux utilisateurs un stockage externe propre et bien rangé.

    répondre
    0
  • 巴扎黑

    巴扎黑2017-04-17 18:00:29

    Vous pouvez vous référer au blog http://blog.csdn.net/github_3...

    répondre
    0
  • Annulerrépondre