android6.0 用户关掉sd卡读取权限的情况下, 还能做到手机缓存么?
PHP中文网
PHP中文网 2017-04-17 17:58:29
0
2
464

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

PHP中文网
PHP中文网

认证高级PHP讲师

모든 응답(2)
小葫芦

형님, 틀렸어요.

공식 문서를 확인하실 수 있습니다.

안드로이드 저장 공간은 Internal storageExternal storage

두 부분으로 나누어져 있습니다.

내부 저장소

항상 사용 가능하며 추가 권한이 필요하지 않습니다. 여기에 있는 파일은 기본적으로 앱에서만 액세스할 수 있습니다.
Context 아래의 getFilesDir() 메소드를 통해 앱의 내부 디렉터리를 가져올 수 있고, getCacheDir()을 통해 내부 캐시 디렉터리를 가져올 수 있습니다.

외부 저장소

외부 스토리지 장착으로 인해 이 공간을 항상 사용하지 못할 수도 있습니다. 그러나 점점 더 많은 제조업체에서 사용자가 용량 확장을 위해 SD 카드를 사용하는 것을 허용하지 않고 대신 장치의 저장 공간을 고정합니다. 이러한 저장 공간은 여전히 ​​내부 저장소와 외부 저장소로 구분되지만 이 경우 기본적으로 외부 저장소가 사용됩니다. 항상 사용 가능하며

도 사용할 수 있습니다. 으아악

외부 저장소 마운트 여부를 확인합니다.

Context 아래의 getExternalFilesDir() 메소드를 통해 앱의 외부 디렉터리를 가져올 수 있고, getExternalCacheDir()을 통해 외부 캐시 디렉터리를 가져올 수 있습니다.

이 두 디렉터리는 外置储存空间目录/Android/data/你的App的包名/ 아래에 있습니다. 여기서 읽고 쓰는 데 추가 권한이 필요하지 않습니다(API 18 이상). 앱의 minSdkVersion <= 18인 경우 읽고 쓰는 것이 좋습니다. AndroidManifest.xml에서 이 권한을 추가하세요:

으아악

단, 이 디렉터리 외부의 파일을 읽고 쓰는 경우 런타임 권한이 필요합니다(예를 들어 외부 저장소의 루트 디렉터리에 로그 파일 등을 쓰려는 경우)

많은 앱이나 타사 SDK가 외부 저장소의 루트 디렉터리에 캐시를 읽고 쓰기 때문에 매분마다 휴대전화 외부 저장소의 루트 디렉터리에 있는 온갖 종류의 이상한 디렉터리를 보게 됩니다. SD카드, 정말 답답하죠? 하지만 안드로이드 6.0 이상의 버전이 탑재된 기기의 점유율이 지속적으로 증가함에 따라 이 문제는 점차 해결될 것이라 믿습니다.

안드로이드 애플리케이션 개발 동료 모두가 getExternalFilesDir(), getExternalCacheDir() 방식을 최대한 활용하여 사용자에게 깔끔하고 정돈된 외부 저장소를 제공해주기를 바랍니다.

巴扎黑

블로그 http://blog.csdn.net/github_3...

를 참고하시면 됩니다.
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿