gpt4 book ai didi

java - 每次发短信都是 'show permission dialog '怎么解决?

转载 作者:行者123 更新时间:2023-12-02 00:32:01 26 4
gpt4 key购买 nike

我想通过android-app发送短信,但是每次发送消息之前都会显示权限对话框,我应该在第一次请求权限后发送一条不显示对话框的消息。

我的 Android 应用程序在 mi-8 上运行,目标 SDK 版本是 29。

if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.SEND_SMS) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.SEND_SMS}, 3);
} else if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_PHONE_STATE}, 4);
} else {
sendMsg();
}

我希望在第一次请求权限后发送消息时不会显示权限对话框,但实际上每次发送消息时都会显示对话框。

最佳答案

使用此函数检查您是否已授予权限,如果您已授予所需的权限,它将返回 true 标志

通过这种方式检查

   private boolean checkAndRequestPermissions(){

//add as much as permission you need
int readSMS = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_SMS);
int sendSms = ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS);

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

if (readSMS != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.READ_SMS);
}
if (receiveSms != PackageManager.PERMISSION_GRANTED) {
listPermissionsNeeded.add(Manifest.permission.RECEIVE_SMS);
}
if (!listPermissionsNeeded.isEmpty()) {
ActivityCompat.requestPermissions(this, listPermissionsNeeded.toArray(new String[listPermissionsNeeded.size()]),
REQUEST_ID_MULTIPLE_PERMISSIONS);
return false;
}
return true;
}

通过这种方式检查

 if (checkAndRequestPermissions()){
sendMsg();
}else{
//do what you want
}

无需通过硬编码方式执行此操作

关于java - 每次发短信都是 'show permission dialog '怎么解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58006074/

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