Android判断某个权限是否开启的方法
作者:Android______ 发布时间:2021-06-28 07:42:15
标签:Android,权限,开启
如下所示:
/**
* 读写权限 自己可以添加需要判断的权限
*/
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


猜你喜欢
- 进度条以一种客观化的方式,让我们知道程序正在执行的情况,在程序需要时间执行任务的时候,提示进度条友好的告诉用户说,当前任务还没有完成,请稍稍
- 目录Mybatis简介Mybatis开发步骤:Mybatis的映射文件概述Mybatis的增删改查操作MyBatis的核心配置文件概述MyB
- mybatis-plus-generator + clickhouse 自动生成代码依赖<!--> mybatis-plus &
- cmd调用phantomjs官方资料:http://phantomjs.org/quick-start.html手动执行从官方下载phant
- 单点登录概念单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系
- 概述本文介绍通过java程序向PDF文档添加图片,以及替换和删除PDF中已有的图片。另外,关于图片的操作还可参考设置PDF 图片背景、设置P
- 本来是想写一篇《委托与lambda表达式的前世今生》,但仅委托部分已经写了很多内容,于是就此分开关于Lambda表达是的内容后续再写吧。不知
- 本文讲述了Android版Intent.ACTION_SEND分享图片和文字内容。分享给大家供大家参考,具体如下:编辑推荐:稀土掘金,这是一
- 今天来给大家介绍一个非常有用的Studio Tips,有些时候我们在一个方法内部写了过多的代码,然后想要把一些代码提取出来再放在一个单独的方
- 本文实例为大家分享了Android实现截长图功能的具体代码,供大家参考,具体内容如下先看看手机自带的长截屏功能: 机型: viv
- 大家都知道使用java反射可以在运行时动态改变对象的行为,甚至是private final的成员变量,但并不是所有情况下,都可以修改成员变量
- 1.RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA公开密钥密码体制。所谓的公开密钥密码体制就是使用不
- “深入浅出,人人都是程序员”开发过android手机的同学都知道在eclipse中可以直接查找到SHA1值,但是使用intellij ide
- 为什么需要互斥量在多任务操作系统中,同时运行的多个任务可能都需要使用同一种资源。这个过程有点类似于,公司部门里,我在使用着打印机打印东西的同
- /** * 实现 * @author dujinyang * */顺序是: OneAcitivity
- Unity脚本中枚举类型在inspector面板中文显示,供大家参考,具体内容如下效果:工具脚本:ChineseEnumTool.csusi
- 项目分为前台和后台,前台主要为学生角色、后台主要为管理员角色。管理员添加试题和发布试卷,学生负责在线考试、在线查看成绩和错题记录列表等。管理
- Android11 读写权限申请Android11系统对应用写入权限做了严格的限制。本文介绍如何获取文件读写权限。项目中 build.gra
- Android 系统每隔 16ms 会发出 VSYNC 信号重绘界面(Activity)。之所以是 16ms,是因为 Android 设定的
- 首先定义两个示例类ClassA,ClassB,用于后续的示例演示package cn.lzrabbit;public class Class