Как я могу сделать диалоговое окно разрешения SMS - PullRequest
0 голосов
/ 09 января 2019

Я использую следующий код для получения 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);

        }
    }

1 Ответ

0 голосов
/ 09 января 2019

По сути, вы можете создать AlertDialog и добавить туда описание. Вот пример того, как этого достичь

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
}

Кроме того, вы можете разрешить пользователю отправлять SMS без какого-либо разрешения. Создайте эти вспомогательные методы внутри вашего Activity

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;
}
...