第三方框架
1 2 3 4
|
implementation "com.github.permissions-dispatcher:permissionsdispatcher:4.9.2" annotationProcessor "com.github.permissions-dispatcher:permissionsdispatcher-processor:4.9.2"
|
AndroidManifest
1 2 3
| <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
|
java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
private void checkPermission() { SplashActivityPermissionsDispatcher.onPermissionGrantedWithPermissionCheck(this); }
@NeedsPermission({ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }) void onPermissionGranted() { prepareNext(); }
@OnShowRationale({ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }) void showRequestPermission(PermissionRequest request) { new AlertDialog.Builder(getHostActivity()) .setMessage(R.string.permission_hint) .setPositiveButton(R.string.allow, (dialog, which) -> request.proceed()) .setNegativeButton(R.string.deny, (dialog, which) -> request.cancel()).show(); }
@OnPermissionDenied({ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }) void showDenied() { finish(); }
@OnNeverAskAgain({ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }) void showNeverAsk() { checkPermission(); }
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); SplashActivityPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults); }
|
然后在合适的地方加上 checkPermission();
关键点
前面记得加@RuntimePermissions
1 2 3 4 5 6
|
@RuntimePermissions public class SplashActivity extends BaseLogicActivity {
|
最后结果
![](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
![](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)