当我在清单中只声明read_external_权限时,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...
}
据我所知,我只需要读取外部存储就可以从getexternalfilesdir()中获取一些内容。
可能是什么原因?
另外,我的测试设备是lgoptimusprog和android 4.1.2,我重新启动了设备。
最佳答案
试试这个,打开外部存储器。
String m_str = Environment.getExternalStorageDirectory()
.getAbsolutePath().toString();