当我只在我的清单中声明READ_EXTERNAL_PERMISSION时,getExternalFilesDir()返回null。如果我声明WRITE_EXTERNAL_STORAGE,getExternalFilesDir()会返回一些内容。getExternalFilesDir(null)即使具有READ_EXTERNAL_STORAGE权限也会返回null
我做了一些检查,看看我是否真的有权限,并检查是否安装了外部存储。
PackageManager pm = mContext.getPackageManager();
int permRead = pm.checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE, mContext.getPackageName());
//permRead: "0"
int permWrite = pm.checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, mContext.getPackageName());
//permWrite: "-1"
String extState = Environment.getExternalStorageState();
// extState: "mounted"
if (permRead == PackageManager.PERMISSION_GRANTED
&& extState.equals(Environment.MEDIA_MOUNTED))
{
File dir = mContext.getExternalFilesDir(Environment.DIRECTORY_PICTURES);
// dir is null here!!
... more work...
}
据我所知,我只需要READ_EXTERNAL_STORAGE从getExternalFilesDir()中获取某些内容。
可能是什么原因?
PS。我的测试设备是LG Optimus Pro G和Android 4.1.2,并且我重新启动了设备。
最后一些结果! Environment.getExternalStorageDirectory()返回“storage/sdcard0”。但为什么getExternalFilesDir()失败?仍然没有任何解释... – wooohoh
在这个,你可以给文件名全文路径 –
然后工作,我认为 –