【发布时间】:2018-01-08 09:27:37
【问题描述】:
我需要向用户请求两个权限:READ_PHONE_STATE 和 WRITE_EXTERNAL_STORAGE。我这样做如下:
public void checkPermissions() {
if (Build.VERSION.SDK_INT >= 23) {
ArrayList<String> missingPermisions = new ArrayList<>();
if (checkSelfPermission(android.Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
missingPermisions.add(android.Manifest.permission.READ_PHONE_STATE);
}
if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
missingPermisions.add(android.Manifest.permission.WRITE_EXTERNAL_STORAGE);
}
if (missingPermisions.size() > 0) {
String[] permissions = missingPermisions.toArray(new String[missingPermisions.size()]);
ActivityCompat.requestPermissions(this, permissions, PERMISSIONS_REQUEST);
}
}
}
方法checkPermissions() 在onCreate() 中被调用。
从我请求的两个权限中,只出现了WRITE_EXTERNAL_STORAGE 对话。我检查了在执行期间missingPermisions.size() 的值是2。我还尝试仅请求READ_PHONE_STATE 权限,在这种情况下,对话框也没有显示。我的清单也包含这些权限:
<permission android:name="android.permission.INTERNET" />
<permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<permission android:name="android.permission.READ_PHONE_STATE" />
<permission android:name="android.permission.MEDIA_CONTENT_CONTROL" />
为什么我的READ_PHONE_STATE 权限对话框不显示?我该如何解决?
【问题讨论】:
标签: android android-permissions runtime-permissions