gpt4 book ai didi

java - 无法一次请求多个危险权限

转载 作者:太空狗 更新时间:2023-10-29 12:59:13 26 4
gpt4 key购买 nike

我正在开发一个收集数据进行处理的应用程序,因此它需要多个危险权限(即 ACCESS_FINE_LOCATIONREAD_PHONE_STATE)。目前它请求一个然后崩溃。

我已经尝试使用 ActivityCompat.requestPermissions 分别请求权限,并且我已经尝试在数组中拥有这两种权限。我也尝试过使用请求代码 0,1 和 7,因为我看到这些代码用于对有关此主题的类似问题的不同回答,但似乎没有任何改变。

 private void setupPermissions() {
ArrayList<String> permissions = new ArrayList<>();
if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
permissions.add(Manifest.permission.READ_PHONE_STATE);
}
if (permissions.size()>0){
ActivityCompat.requestPermissions(getActivity(), permissions.toArray(new String[permissions.size()]), 7);
}
}

预期结果:

  • 首次打开应用程序时,应通过两个单独的对话框(一个接一个)或多页对话框请求两种权限。
  • 然后该应用应按预期运行

实际结果:

  • 请求第一个
  • 允许您继续使用该应用
  • 当您尝试使用需要第二个的功能时崩溃
  • 重新打开应用
  • 请求第二个
  • 允许应用程序正常运行

最佳答案

每当需要权限时调用此检查 RequestPermissions() 方法

private boolean checkAndRequestPermissions() {

int ACCESS_FINE_LOCATION = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
int READ_PHONE_STATE = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE);

List<String> listPermissionsNeeded = new ArrayList<>();

if (READ_PHONE_STATE != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.READ_PHONE_STATE);
}
if (ACCESS_FINE_LOCATION != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.ACCESS_FINE_LOCATION);
}

if (!listPermissionsNeeded.isEmpty()) {
ActivityCompat.requestPermissions(this, listPermissionsNeeded.toArray
(new String[listPermissionsNeeded.size()]), 101);
return false;
}
return true;
}

关于java - 无法一次请求多个危险权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57492884/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com