运行时权限检查API 23+:无法解析符号' Manifest.permission.READ_EXTERNAL_STORAGE'

时间:2016-04-05 19:32:28

标签: android

我试图检查API 23及更高版本中的权限,如下所示:

int result = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);

但它无法找到Manifest.permission.READ_EXTERNAL_STORAGE

这是因为在我的清单中,权限设置如下:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

所以我把它改成了这个,现在它起作用了:

<permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

您是否可以在运行时使用uses-permission检查权限?我是否必须在我的应用中将uses-permission更改为permission,以便在API 23 +中运行时检查权限?

编辑:我在Android Studio中遇到的错误是:

  

无法解析符号&#39; READ_EXTERNAL_STORAGE&#39;

2 个答案:

答案 0 :(得分:17)

好的我弄清楚问题是什么:

我正在使用

int result = ContextCompat.checkSelfPermission(this, com.mypackage.myapp.Manifest.permission.READ_EXTERNAL_STORAGE);

我需要的是:

int result = ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE);

所以看起来在Android Studio中使用自动导入是个坏主意。

答案 1 :(得分:-1)

我之前就是这样做的:

// inside my class
private static final String[] INITIAL_PERMS = {Manifest.permission.READ_EXTERNAL_STORAGE};
private static final int REQUEST = 1337;

// inside a method
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
{
    requestPermissions(INITIAL_PERMS, REQUEST);
}

如果我告诉你我记得为什么我使用数字1337,我会骗你的,我会认为这可能是任何数字,但是我在几个月前设置了它并且再也没有改变它。