尝试使用这样的东西。未经测试,但应该可以正常工作。当您在这里发现问题时请留言。
这只是为了展示 Android M 中的权限授予是如何工作的。请通过上面提到的功能来扩展它Android 权限教程网站 http://developer.android.com/training/permissions/requesting.html.
您将需要添加ActivityCompat.shouldShowRequestPermissionRationale http://developer.android.com/reference/android/support/v4/app/ActivityCompat.html#shouldShowRequestPermissionRationale%28android.app.Activity,%20java.lang.String%29检查以匹配最佳实践。我可以扩展这个答案,但我认为没有必要。只需确保您在运行时授予权限(或使用targetSdkVersion
低于 23 - 但不建议这样做)
private static final int PERMISSION_SEND_SMS = 123;
private void requestSmsPermission() {
// check permission is given
if (ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
// request permission (see result in onRequestPermissionsResult() method)
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.SEND_SMS},
PERMISSION_SEND_SMS);
} else {
// permission already granted run sms send
sendSms(phone, message);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// permission was granted
sendSms(phone, message);
} else {
// permission denied
}
return;
}
}
}
private void sendSms(String phoneNumber, String message){
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, null, null);
}