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>

Android判断某个权限是否开启的方法

来源: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
  • asp之家 软件编程 m.aspxhome.com