需要android.permission.READ_EXTERNAL_STORAGE或grantUriPermission()错误?

时间:2016-03-13 20:49:16

标签: android

我认为自从最新的Android更新此方法以来:

public String getPath(Uri uri) {
    Cursor cursor = getContentResolver().query(uri, null, null, null, null);
    cursor.moveToFirst();
    String document_id = cursor.getString(0);
    document_id = document_id.substring(document_id.lastIndexOf(":") + 1);
    cursor.close();

    cursor = getContentResolver().query(
            android.provider.MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
            null, MediaStore.Images.Media._ID + " = ? ", new String[]{document_id}, null);
    cursor.moveToFirst();
    String path = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA));
    cursor.close();

    return path;
}

不会工作,因为我需要某种许可。有修复吗?

1 个答案:

答案 0 :(得分:3)

您需要保留READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE权限。这涉及:

  • 在您的清单中添加适当的<uses-permission>元素,

  • 如果您的targetSdkVersion为23或更高,requesting the permission at runtime来自用户,则这些权限为dangerous