Android判断某个权限是否开启的方法
作者:Android______ 时间:2021-06-28 07:42:15
如下所示:
/**
* 读写权限 自己可以添加需要判断的权限
*/
public static String[]permissionsREAD={
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE };
/**
* 判断权限集合
* permissions 权限数组
* return true-表示没有改权限 false-表示权限已开启
*/
public static boolean lacksPermissions(Context mContexts,permissionsREAD) {
for (String permission : permissions) {
if (lacksPermission(mContexts,permission)) {
return true;
}
}
return false;
}
/**
* 判断是否缺少权限
*/
private static boolean lacksPermission(Context mContexts, String permission) {
return ContextCompat.checkSelfPermission(mContexts, permission) ==
PackageManager.PERMISSION_DENIED;
}
//Activity使用
if (lacksPermissions()){//读写权限没开启
ActivityCompat.requestPermissions(this,permissionsREAD,0);
}else {
//读写权限已开启
}
//权限设置回调
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode==0){
for (int i = 0; i < permissions.length; i++) {
if (grantResults[i]!=-1){
//T.showShort(mContext,"权限设置成功");
}else {
//T.showShort(mContext,"拒绝权限");
// 权限被拒绝,弹出dialog 提示去开启权限
showPermissions();
break;
}
}
}
}
//弹出dialog
private void showPermissions(){
final Dialog dialog=new android.app.AlertDialog.Builder(mContext).create();
View v=LayoutInflater.from(mContext).inflate(R.layout.dialog_permissions,null);
dialog.show();
dialog.setContentView(v);
Button btn_add= (Button) v.findViewById(R.id.btn_add);
Button btn_diss= (Button) v.findViewById(R.id.btn_diss);
btn_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse("package:" + getPackageName()));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
startActivity(intent);
}
});
btn_diss.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
}
//dialog布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@color/white"
android:orientation="vertical" >
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_gravity="center_vertical"
android:gravity="center"
android:text="提示"
android:background="@color/zhuti_color"
android:textColor="@color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/tv_hint"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/zhuti_color"
android:layout_marginRight="10dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:textSize="16sp"
android:gravity="center"
android:lineSpacingExtra="3dp"
android:text="需要手动开启权限才能使用"/>
<TextView
android:id="@+id/tv_hint2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/zhuti_color"
android:layout_margin="10dp"
android:textSize="12sp"
android:gravity="center"
android:visibility="gone"
android:lineSpacingExtra="3dp"
android:text=""/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="15dp"
android:gravity="center"
android:orientation="horizontal">
<Button
android:id="@+id/btn_diss"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="30dp"
android:background="@color/line2"
android:text="取消"
/>
<Button
android:id="@+id/btn_add"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="30dp"
android:layout_gravity="center"
android:background="@color/zhuti_color"
android:text="去设置"
android:layout_marginLeft="20dp"
android:textColor="@color/white" />
</LinearLayout>
</LinearLayout>
来源:https://blog.csdn.net/qq_27400335/article/details/79412774
标签:Android,权限,开启
0
投稿
猜你喜欢
SpringBoot使用jasypt加解密密码的实现方法(二)
2021-10-15 14:16:46
springboot整合shiro与自定义过滤器的全过程
2023-11-24 21:02:40
java获取网络图片上传到OSS的方法
2023-10-14 23:01:07
java实现MD5加密算法的实例代码
2021-10-01 16:49:14
从搭建Struts2 开发环境说起
2023-11-18 08:54:53
Unity实现弹球打砖块游戏
2021-09-24 16:13:08
SpringMvc接收参数方法总结(必看篇)
2022-10-02 12:28:54
Java 中的垃圾回收机制详解
2023-01-11 19:32:34
Android多媒体应用使用SoundPool播放音频
2022-07-16 22:21:04
Spring Aop 如何获取参数名参数值
2022-09-08 17:00:41
c#中var关键字用法浅谈
2022-03-14 00:21:51
基于JavaSwing设计和实现的酒店管理系统
2022-03-31 12:12:14
如何利用泛型封装通用的service层
2023-05-15 04:55:43
详解Spring-bean的循环依赖以及解决方式
2023-08-18 18:30:38
Java使用GZIP压缩导致HTTP请求返回乱码问题解决
2022-04-12 07:31:09
SpringBoot利用拦截器实现避免重复请求
2022-02-07 00:21:53
Javaweb获取表单数据的多种方式
2022-12-25 18:13:41
C#控制台程序中处理2个关闭事件的代码实例
2021-11-21 03:45:40
C# PictureBox图片控件实现图片交换
2022-12-05 17:09:10
C#异步执行任务的方法
2022-02-27 15:02:41