当我在清单中只声明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();

10-08 15:00