版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoshuxgh/article/details/88745290
public class PermissionUtil {
public static int REQUEST_CODE = 22;
public static String[] PERMISSIONS_STORAGE = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
/**
* 检查单个权限
*/
@RequiresApi(api = Build.VERSION_CODES.M)
public static boolean checkPermission(Context context, @NonNull String permission) {
List<String> noPermission = new ArrayList<>();
// 检查该权限是否已经获取
int i = ContextCompat.checkSelfPermission(context, permission);
// 权限是否已经 授权 GRANTED---授权 DINIED---拒绝
if (i == PackageManager.PERMISSION_GRANTED) {
return true;
}
return false;
}
/**
* 检查多权限
*/
@RequiresApi(api = Build.VERSION_CODES.M)
public static String[] checkPermission(Context context, @NonNull String... permissions) {
List<String> noPermission = new ArrayList<>();
for (String permission : permissions) {
// 检查该权限是否已经获取
if (!checkPermission(context, permission)) {
noPermission.add(permission);
}
}
String[] result = new String[noPermission.size()];
return noPermission.toArray(result);
}
/**
* 动态申请权限
*/
@RequiresApi(api = Build.VERSION_CODES.M)
public static void requestPermission(Activity context, String... permissions) {
if (permissions.length > 0) {
context.requestPermissions(permissions, REQUEST_CODE);
}
}
/**
* 动态申请权限
*/
@RequiresApi(api = Build.VERSION_CODES.M)
public static void checkAndRequestPermissions(Activity context, String... permissions) {
requestPermission(context, permissions);
}
}
public class StartActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= 23 && PermissionUtil.checkPermission(this, PermissionUtil.PERMISSIONS_STORAGE).length > 0) {
PermissionUtil.checkAndRequestPermissions(this, PermissionUtil.PERMISSIONS_STORAGE);
} else {
intentToMainActivity();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
boolean hasPermissionDenin = false;
if (requestCode == PermissionUtil.REQUEST_CODE) {
for (int i = 0; i < grantResults.length; i++) {
if (grantResults[i] == -1) {
hasPermissionDenin = true;
break;
}
}
if (hasPermissionDenin) {
Toast.makeText(this, StringUtil.getString(this, R.string.deny_permissions_warning), Toast.LENGTH_LONG).show();
}
intentToMainActivity();
}
}
private void intentToMainActivity() {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
this.finish();
}
}