Android 8.0 알림 표시줄 사용 권한 설정

핸드폰을 사용할 때, 우리는 자주 각종 알림을 만날 수 있는데, 예를 들면, 위챗, QQ, 브라우저 등등, 귀찮지 않게 너에게 각종 전송을 할 수 있다. 본고는 알림의 대체적인 절차를 보여 줄 것이다
우선, 우리는 적당한 시기에 우리 앱의 알림 표시줄 권한을 검사한다
boolean Jurisdiction = NotificationManagerCompat.from(AppApplication.getContext()).areNotificationsEnabled();

이 방법을 통해 우리는 우리 앱에 알림 표시줄의 전송 권한이 있는지 확인할 수 있다. 만약에 우리가 권한이 없다면 안내하는 방식으로 사용자에게 우리가 이런 권한이 필요하다는 것을 알려주고 설정하는 방식을 제공할 수 있다. 여기서 저는 제3자material-dialogs 소스 오픈 창 구조를 사용했다.마지막으로 탄창의 확인 감청에서 시스템 버전 번호에 따라 대응하는 방식으로 시스템 권한 관리 창을 팝업합니다.물론, 너도 너 자신의 탄창을 사용하여 사용자에게 알릴 수 있다
의존도는 다음과 같습니다.
api "com.afollestad.material-dialogs:core:0.9.4.5"
api "com.afollestad.material-dialogs:commons:0.9.4.5"
if (!NotificationManagerCompat.from(AppApplication.getContext()).areNotificationsEnabled()) {
    MaterialDialog.Builder builder = new MaterialDialog.Builder(mContext)
        .title("        ")
        .positiveText("  ")
        .negativeText("  ");
        .onAny(new MaterialDialog.SingleButtonCallback() {
            @Override
            public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
                if (which == DialogAction.NEUTRAL) {
                    Log.e("onClick", "    : ");
                } else if (which == DialogAction.POSITIVE) {
                    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && Build.VERSION.SDK_INT <  Build.VERSION_CODES.O) {
                        Intent intent = new Intent();
                        intent.setAction("android.settings.APP_NOTIFICATION_SETTINGS");
                        intent.putExtra("app_package", MainActivity.this.getPackageName());
                        intent.putExtra("app_uid", MainActivity.this.getApplicationInfo().uid);
                        startActivity(intent);
                    } else if (android.os.Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT) {
                        Intent intent = new Intent();
                        intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                        intent.addCategory(Intent.CATEGORY_DEFAULT);
                        intent.setData(Uri.parse("package:" + MainActivity.this.getPackageName()));
                        startActivity(intent);
                    } else {
                        Intent localIntent = new Intent();
                        localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
                        localIntent.setData(Uri.fromParts("package", MainActivity.this.getPackageName(), null));
                        startActivity(localIntent);
                    }
                    Log.e("onClick", "  : ");
                } else if (which == DialogAction.NEGATIVE) {
                    Log.e("onClick", "   : ");
                }
            }
        }).show();
    }

여기까지, 우리의 권한은 이미 오픈을 보장할 수 있습니다.Push 시작

좋은 웹페이지 즐겨찾기