我试图检查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;
答案 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,我会骗你的,我会认为这可能是任何数字,但是我在几个月前设置了它并且再也没有改变它。