Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么onRequestPermissionsResult给出两个数组而不是一个映射?_Java_Android - Fatal编程技术网

Java 为什么onRequestPermissionsResult给出两个数组而不是一个映射?

Java 为什么onRequestPermissionsResult给出两个数组而不是一个映射?,java,android,Java,Android,该方法在其回调中提供两个数组: 权限|字符串:请求的权限。永不为空 grantResults | int:授予或拒绝相应权限的授予结果。永不为空 据我所知,要查看是否授予了特定许可,并根据评估结果采取行动,您需要执行以下操作: for(int i = 0; i < permissions.length; ++i) { if(Manifest.permission.SEND_SMS.equals(permissions[i]) && grantResults[i] =

该方法在其回调中提供两个数组:

权限|字符串:请求的权限。永不为空

grantResults | int:授予或拒绝相应权限的授予结果。永不为空

据我所知,要查看是否授予了特定许可,并根据评估结果采取行动,您需要执行以下操作:

for(int i = 0; i < permissions.length; ++i) {
    if(Manifest.permission.SEND_SMS.equals(permissions[i]) && grantResults[i] == PackageManager.PERMISSION_GRANTED) {
        sendSMS();
    }
}
for(int i=0;i
为什么这个方法不简单地给出一个
映射
?行动将是:

for(Map.Entry<String, Integer> permission : permissions.entrySet()) {
    if(Manifest.permission.SEND_SMS.equals(permission.getKey()) && permission.getValue() == PackageManager.PERMISSION_GRANTED) {
        sendSMS();
    }
}
for(Map.Entry权限:permissions.entrySet()){
if(Manifest.permission.SEND_SMS.equals(permission.getKey())&&permission.getValue()==PackageManager.permission_已授予){
sendSMS();
}
}
在我看来,后者更清晰、更有力。原因很难是绩效;任何给定的应用程序一次请求的权限很少会超过五到六个。这里的理由是什么?这似乎是一个奇怪且不直观的设计选择。

形式为“为什么开发人员X选择以这种方式实现Y?”的问题不适合堆栈溢出。通常,唯一能肯定回答问题的人是开发人员X,而开发人员X可能不会看到您的问题。其他任何人只能提供意见。因此,我的观点是:如果我不得不猜测,那是因为
Intent
不支持
Map
extra
requestPermissions()
onRequestPermissionResult()
,在封面下,使用
startActivityForResult()
onActivityResult()
,因此我们被
Intent
额外的通信限制。