Android|Android 6.0动态申请权限
【Android|Android 6.0动态申请权限】简单实现动态申请权限的步骤:
在此之前,需要在 AndroidManifest.xml里定义需要申请的权限
- 写一个专门检测权限的工具类 (方便以后直接移植到其他项目中)
- 在onCreate方法使用该工具类申请权限
- 申请权限回调方法
- 编写CheckPermissionUtils
**
* 检测权限工具类
*/public final class CheckPermissionUtils {
private CheckPermissionUtils() {}// 需要申请的权限
private static String[] permissions = new String[] {
Manifest.permission.ACCESS_FINE_LOCATION, //位置
Manifest.permission.READ_PHONE_STATE //手机状态
};
// 检测权限
public static String[] checkPermission(Context context) {
List data = https://www.it610.com/article/new ArrayList<>();
// 存储未申请的权限
for (String permission : permissions) {
int checkSelfPermission = ContextCompat.checkSelfPermission(context, permission);
if (checkSelfPermission == PackageManager.PERMISSION_DENIED) { // 判断是否未申请
data.add(permission);
}
}return data.toArray(new String[data.size()]);
}
}
- 使用 CheckPermissionUtils
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
// 检测权限
String[] permissions = CheckPermissionUtils.checkPermission(this);
if (permissions.length == 0) {
// 需要申请的权限都申请了
// 2s 后进入主界面
handler.sendEmptyMessageDelayed(ENTER_MAIN_UI, 2000);
} else {
// 申请权限
ActivityCompat.requestPermissions(this, permissions, 100);
}
}
- 申请回调
/**
* 申请权限返回
* @param requestCode 返回码
* @param permissions 权限
* @param grantResults 结果
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 100) {
for (int grantResult : grantResults) {
// 拒绝操作
if (grantResult == PackageManager.PERMISSION_DENIED) {
finish();
return;
}
}
// 1s 进入主界面
handler.sendEmptyMessageDelayed(ENTER_MAIN_UI, 1000);
}
}
推荐阅读
- android第三方框架(五)ButterKnife
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- android|android studio中ndk的使用
- Android事件传递源码分析
- RxJava|RxJava 在Android项目中的使用(一)
- Android7.0|Android7.0 第三方应用无法访问私有库
- 深入理解|深入理解 Android 9.0 Crash 机制(二)
- android防止连续点击的简单实现(kotlin)
- Android|Android install 多个设备时指定设备