我如何识别 GRANTED 和 UNACCEPTED 权限?
How do I recognize GRANTED and UNACCEPTED of permissions?
我使用这段代码在onCreate中识别权限:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, 100);
在 activity 中,我使用此代码片段来检查、允许或拒绝权限:
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case 100: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
Toast.makeText(getApplicationContext(), "Ok", Toast.LENGTH_SHORT).show();
else
Toast.makeText(getApplicationContext(), "No", Toast.LENGTH_SHORT).show();
}
}
}
并在 Manifest.xml 中:
<!-- ***** Uses Permission ***** -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
但它总是 returns 代码中的零值,无论是在验证还是被拒绝时。
如何判断用户是否已验证或拒绝?
我试过你的例子,它给出了 0 和 -1 的正确结果。
0 表示授予 和
-1 表示已拒绝。
这可能是设备问题,请勿为此使用模拟器,否则您的代码可以正常工作。
这是我的快照:
01-13 13:00:29.134 30051-30051/com.usense.netsense I/get_permission: permissions[0]= android.permission.READ_PHONE_STATE grantResults[0]= 0
01-13 13:00:29.134 30051-30051/com.usense.netsense I/get_permission: permissions[1]= android.permission.WRITE_EXTERNAL_STORAGE grantResults[1]= -1
01-13 13:00:29.134 30051-30051/com.usense.netsense I/get_permission: permissions[2]= android.permission.READ_EXTERNAL_STORAGE grantResults[2]= -1
我使用这段代码在onCreate中识别权限:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, 100);
在 activity 中,我使用此代码片段来检查、允许或拒绝权限:
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case 100: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
Toast.makeText(getApplicationContext(), "Ok", Toast.LENGTH_SHORT).show();
else
Toast.makeText(getApplicationContext(), "No", Toast.LENGTH_SHORT).show();
}
}
}
并在 Manifest.xml 中:
<!-- ***** Uses Permission ***** -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
但它总是 returns 代码中的零值,无论是在验证还是被拒绝时。
如何判断用户是否已验证或拒绝?
我试过你的例子,它给出了 0 和 -1 的正确结果。 0 表示授予 和 -1 表示已拒绝。
这可能是设备问题,请勿为此使用模拟器,否则您的代码可以正常工作。 这是我的快照:
01-13 13:00:29.134 30051-30051/com.usense.netsense I/get_permission: permissions[0]= android.permission.READ_PHONE_STATE grantResults[0]= 0
01-13 13:00:29.134 30051-30051/com.usense.netsense I/get_permission: permissions[1]= android.permission.WRITE_EXTERNAL_STORAGE grantResults[1]= -1
01-13 13:00:29.134 30051-30051/com.usense.netsense I/get_permission: permissions[2]= android.permission.READ_EXTERNAL_STORAGE grantResults[2]= -1