Android在如何处理SD卡和存储方面有很多变化:
从API 23(Android 6)开始,事情似乎再次发生变化......
对于API 23,至少有两件新东西与存储相关:
由于没有配备SD卡的Android 6设备,并且因为模拟器本身并不能真正使用SD卡,所以仍然无法知道发生了什么.
SD卡是否可以使用File-API而不是DocumentFile获取访问权限?
如果我想访问所有外部存储路径(包括SD卡),这是否意味着我需要两次请求此权限:一个用于主外部存储,一个用于SD卡?
在手动授予许可之前,SD卡上的文件是否可以以任何方式访问?
假设用户选择使用"Adoptable Storage Devices",这对于检索应用程序文件路径的各种函数意味着什么?例如:getFilesDir,getExternalFilesDir,...?getExternalFilesDirs的oder会因为它而改变吗?
当用户将应用程序从SD卡移动到SD卡时(使用"可采用的存储设备"),应用程序的文件会发生什么变化?SD卡上的应用程序文件怎么样?他们会留下来吗?或者他们会搬到某个地方?
例如,如果应用程序在SD卡上有"file1.txt",则在路径"/ storage/extSdCard/Android/data/appPackageName"上,它有一个文件"file2.txt"(或者甚至是同一个名字)在路径"/ storage/emulated/0/Android/data/appPackageName"上的主外部存储上.切换后,这些文件会发生什么?如果有的话,他们将如何合并到一个文件夹中?
将应用程序移动到SD卡(使用"Adoptable Storage Devices")时,是否意味着不会使用内部存储?
android sd-card android-permissions android-external-storage android-6.0-marshmallow
使用一些非常简单的android代码我试图根据以下逻辑访问一个文件夹:
public void try_to_navigate_local_dir(){
Environment e = new Environment();
ArrayList<String> filesList = new ArrayList<String>();
String sd_card = Environment.getExternalStorageDirectory().toString() + "/subdir_x";
File file = new File( sd_card ) ;
File list[] = file.listFiles();
for( int i=0; i< list.length; i++) {
filesList.add( list[i].getName() );
}
}
Run Code Online (Sandbox Code Playgroud)
凡subdir_x
由我的手机上其他应用程序创建的.
我可以使用文件管理器查看这些文件夹,但是当我尝试时,我的代码返回null file.listFiles()
.
我如何访问这些文件?