Android 권한 신청-여러 권한

5937 단어 Android
메모:권한 을 호출 하 는 위 치 는 권한 을 사용 하기 전에 두 어야 합 니 다.예 를 들 어 첫 페이지 는 위치 추적 권한 이 필요 합 니 다.시작 페이지 나 위치 추적 을 시작 하기 전에 권한 설정 을 해 야 합 니 다.
Permissions Dispatcher 기반  
package com.ycz.at_cdm_station;

import android.Manifest;
import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.provider.Settings;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.core.app.ActivityCompat;

import com.alibaba.android.arouter.facade.annotation.Route;
import com.lljjcoder.style.citylist.Toast.ToastUtils;
import com.transformers.common.mvp.BaseActivity;
import com.transformers.common.provider.IMainProvider;
import com.transformers.common.util.SystemUtil;
import com.transformers.common.util.ToastUtil;
import com.transformers.common.util.log.KLogUtil;
import com.transformers.main.MainActivity;

import permissions.dispatcher.NeedsPermission;
import permissions.dispatcher.OnNeverAskAgain;
import permissions.dispatcher.OnPermissionDenied;
import permissions.dispatcher.OnShowRationale;
import permissions.dispatcher.PermissionRequest;
import permissions.dispatcher.RuntimePermissions;

/**
 * author: jiaxufei([email protected])
* version: 1.0.0
* since: 2020-03-27 16:54
* *

* *

*/ @RuntimePermissions public class SplashActivity extends BaseActivity { // private boolean isAllowPermissions = false; @Override public int onBindLayout() { return R.layout.activity_main_splash; } @Override public void initView() { if (!isAllowPermissions) { SplashActivityPermissionsDispatcher.requestPermissionWithPermissionCheck(SplashActivity.this); } else { requestPermission(); } // Window window = getWindow(); window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); startMainActivity(); } @Override public boolean enableToolbar() { return false; } @Override public void initData() { } public void startMainActivity() { // startActivity(new Intent(this, MainActivity.class)); // finish(); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { SplashActivityPermissionsDispatcher.onRequestPermissionsResult( SplashActivity.this, requestCode, grantResults); } /** * , 2, CALL_PHONE , */ @NeedsPermission({Manifest.permission.CALL_PHONE,Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}) public void requestPermission() { isAllowPermissions = true; Toast.makeText(SplashActivity.this, " ", Toast.LENGTH_SHORT).show(); } /** * , " ", */ @OnPermissionDenied({Manifest.permission.CALL_PHONE,Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}) public void requestPermissionDenied() { Toast.makeText(SplashActivity.this, " ", Toast.LENGTH_SHORT).show(); } /** * , * * @param permissionRequest */ @OnShowRationale({Manifest.permission.CALL_PHONE,Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}) public void requestPermissionShowRationale(final PermissionRequest permissionRequest) { new AlertDialog.Builder(this).setMessage(" ") .setPositiveButton(" ", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {// , permissionRequest.proceed(); } }) .setNegativeButton(" ", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) {// , requestPermissionDenied permissionRequest.cancel(); } }).show(); } /** * , " ", */ @OnNeverAskAgain({Manifest.permission.CALL_PHONE,Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,}) public void requestPermissionNeverAskAgain() { new AlertDialog.Builder(this) .setMessage(" , , ?") .setPositiveButton(" ", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", SplashActivity.this.getPackageName(), null); intent.setData(uri); startActivity(intent); dialog.dismiss(); } }) .setNegativeButton(" ", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .show(); } }

좋은 웹페이지 즐겨찾기