Android 如何创建自定义的SMS权限对话框
我使用以下代码从用户处获得SMS权限。但我希望在显示权限对话框时添加一些说明。我怎么能做到?或者是这样做的方式?谢谢Android 如何创建自定义的SMS权限对话框,android,permissions,sms,Android,Permissions,Sms,我使用以下代码从用户处获得SMS权限。但我希望在显示权限对话框时添加一些说明。我怎么能做到?或者是这样做的方式?谢谢 if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { if (checkSelfPermission(Manifest.permission.SEND_SMS) == PackageManager.PERMISSION_DENI
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.SEND_SMS)
== PackageManager.PERMISSION_DENIED) {
Log.d("permission", "permission denied to SEND_SMS - requesting it");
String[] permissions = {Manifest.permission.SEND_SMS};
requestPermissions(permissions, PERMISSION_REQUEST_CODE);
}
}
基本上,您可以创建一个
警报对话框
,并在其中添加说明。下面是一个如何实现这一点的示例
try {
new android.app.AlertDialog.Builder(activity)
.setMessage("Your description about the permission")
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String[] permissions = {Manifest.permission.SEND_SMS};
requestPermissions(permissions, PERMISSION_REQUEST_CODE);
}
})
.create()
.show();
} catch (Exception e) {
// handle exception in case context is not present / destroyed, etc
}
或者,您可以让用户在没有任何许可的情况下发送短信。在活动中创建这些帮助器方法
private boolean sendSms(final String phoneNumber, final String content) {
Uri uri = Uri.parse("smsto:" + phoneNumber);
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
if (isIntentAvailable(intent)) {
intent.putExtra("sms_body", content);
startActivity(intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
return true;
}
return false;
}
private boolean isIntentAvailable(final Intent intent) {
return getPackageManager()
.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)
.size() > 0;
}
你不能。如果您想显示基本原理,您需要在请求许可之前创建自己的方法来执行。我测试了您的第一个代码,但显示了两个对话框。是在一个对话框中显示我的描述的方法吗?谢谢。是的,它将显示两个对话框,因为它应该在显示请求权限的真实对话框之前显示一个预对话框。由于请求权限的对话框是由android framework处理的,因此您无法修改它,因此无法在1个对话框中显示您的描述。