当我在清单文件中只声明了READ_EXTERNAL_PERMISSION时,getExternalFilesDir()返回null。如果我声明了WRITE_EXTERNAL_STORAGE,getExternalFilesDir()将返回一些内容。
我进行了一些检查,以确定我是否真的有权限,并检查外部存储器是否已挂载。
我进行了一些检查,以确定我是否真的有权限,并检查外部存储器是否已挂载。
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. 我的测试设备是安卓4.1.2系统的LG Optimus Pro G,并且我已经重新启动了设备。