Android 如何创建自定义的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

我使用以下代码从用户处获得SMS权限。但我希望在显示权限对话框时添加一些说明。我怎么能做到?或者是这样做的方式?谢谢

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个对话框中显示您的描述。