6.0以前感觉只要在manifest中申明了权限就可以用数据库、硬盘缓存、sp这些来做数据缓存。但是6.0后需要动态申请权限, 并且用户可以随时关掉这些权限。 那么在用户关掉或者没有允许sd卡读取权限的情况下,还能做数据缓存么(没有开启权限的话,file总是会创建失败)? 如果能的话,那该怎么做呢?
高洛峰2017-04-17 18:00:29
兄さん、それは間違っていました。
公式ドキュメントをチェックしてください。
Android のストレージ容量は、Internal storage
と External storage
いつでも利用でき、追加の権限は必要ありません。デフォルトでは、ここのファイルにはアプリからのみアクセスできます。
Context の getFilesDir()
メソッドを通じてアプリの内部ディレクトリを取得でき、getCacheDir()
を通じて内部キャッシュ ディレクトリを取得できます。
外部ストレージを取り付けているため、このスペースが常に利用できるとは限りません。ただし、ユーザーが SD カードを使用して容量を拡張することを許可しないメーカーが増えており、その代わりにデバイスのストレージ容量は依然として内部ストレージと外部ストレージに分かれていますが、この場合は基本的に外部ストレージです。はいつでも利用可能です。
も使用できます リーリー外部ストレージがマウントされているかどうかを判断します。
Context の getExternalFilesDir()
メソッドを通じてアプリの外部ディレクトリを取得でき、getExternalCacheDir()
を通じて外部キャッシュ ディレクトリを取得できます。
これら 2 つのディレクトリは 外置储存空间目录/Android/data/你的App的包名/
の下にあります。アプリの minSdkVersion
<= 18 の場合、読み取りと書き込みを行うために追加の権限は必要ありません。 AndroidManifest.xml
に次の権限を追加します:
ただし、このディレクトリの外にあるファイルを読み書きする場合は、実行時権限が必要です (たとえば、外部ストレージのルート ディレクトリにログ ファイルなどを書き込む場合)
多くのアプリやサードパーティ SDK は、外部ストレージのルート ディレクトリにキャッシュを読み書きするため、携帯電話の外部ストレージのルート ディレクトリにあるあらゆる種類の奇妙なディレクトリを毎分見ることになります。 SDカード、本当にイライラしますよね?ただし、バージョン 6.0 以降の Android デバイスのシェアが増加し続けるにつれて、この問題は徐々に解決されると考えています。
Android アプリケーション開発の同僚全員が、可能な限り getExternalFilesDir()
メソッドと getExternalCacheDir()
メソッドを使用して、ユーザーにクリーンで整然とした外部ストレージを提供してほしいと願っています。