我想通过android-应用程序发送短信,但是每次发送消息之前都会显示许可对话框,在第一次请求许可后,我应该发送一条没有对话框显示的消息。
我的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();
}我希望权限对话框在第一次请求权限后发送消息时没有显示,而是每次发送消息时实际显示对话框。
发布于 2019-09-19 08:06:16
使用此函数检查您是否已给予许可,如果您已按要求给予许可,它将返回真标志。
检查这边
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
}不需要用硬编码的方式
https://stackoverflow.com/questions/58006074
复制相似问题