我正在尝试编写一个发送短信的应用程序。在检查我是否拥有所需的权限时,它返回 true,但仍会因 SecurityException 崩溃。
按下按钮时
private void startAutoMsg() {
Log.d("Starting Auto Msg");
//FIXME: Start proper loop
if (canSendSms()) {
sendMessage();
mAutoMsgButton.setBackgroundColor(Color.GREEN);
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用以下功能来确定我是否拥有适当的权限
private boolean canSendSms() {
if ((ContextCompat.checkSelfPermission(mContext, Manifest.permission.SEND_SMS)
== PackageManager.PERMISSION_GRANTED)) {
Log.d("Permission granted");
return true;
} else {
Log.d("Permission denied");
ActivityCompat.requestPermissions(
mActivity, new String[]{Manifest.permission.SEND_SMS}, 101);
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码返回 true,因此 SMS 试图用这个发送
private void sendMessage() {
Log.d("sending message");
PendingIntent sentPI = PendingIntent.getBroadcast(
mContext, 0, new Intent(Constants.ACTION_SMS_SENT), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(
mContext, 0, new Intent(Constants.ACTION_SMS_DELIVERED), 0); …Run Code Online (Sandbox Code Playgroud)