package com.wangdaye.mysplash.common._basic; import android.Manifest; import android.content.pm.PackageManager; import android.os.Build; import android.support.annotation.NonNull; import android.support.annotation.RequiresApi; import android.support.design.widget.Snackbar; import com.wangdaye.mysplash.R; import com.wangdaye.mysplash.common.utils.helper.NotificationHelper; /** * Read write activity. * * This activity can request read and write permission. * * */ public abstract class ReadWriteActivity extends MysplashActivity { @RequiresApi(api = Build.VERSION_CODES.M) protected void requestReadWritePermission() { requestPermission(0); } @RequiresApi(api = Build.VERSION_CODES.M) protected void requestReadWritePermission(int requestCode) { requestPermission(requestCode); } protected void requestReadWritePermissionSucceed(int requestCode) { // do nothing. } protected void requestReadWritePermissionFailed(int requestCode) { NotificationHelper.showSnackbar( getString(R.string.feedback_need_permission), Snackbar.LENGTH_SHORT); } @RequiresApi(api = Build.VERSION_CODES.M) private void requestPermission(int requestCode) { if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED || checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { this.requestPermissions( new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE}, requestCode); } else { requestReadWritePermissionSucceed(requestCode); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permission, @NonNull int[] grantResult) { super.onRequestPermissionsResult(requestCode, permission, grantResult); for (int i = 0; i < permission.length; i ++) { if (grantResult[i] != PackageManager.PERMISSION_GRANTED) { requestReadWritePermissionFailed(requestCode); return; } } requestReadWritePermissionSucceed(requestCode); } }