GVKun编程网logo

EasyPermisson 动态权限使用例子(动态权限设置)

3

想了解EasyPermisson动态权限使用例子的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于动态权限设置的相关问题,此外,我们还将为您介绍关于6.0动态加载权限用PermissionGe

想了解EasyPermisson 动态权限使用例子的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于动态权限设置的相关问题,此外,我们还将为您介绍关于6.0动态加载权限用PermissionGen、Android 6.0动态权限获取:一个EasyPermission的权限管理库、Android EasyPermissions官方库高效处理权限相关教程、Android EasyPermissions拍照权限管理申请的新知识。

本文目录一览:

EasyPermisson 动态权限使用例子(动态权限设置)

EasyPermisson 动态权限使用例子(动态权限设置)

Android 6.0起权限管理更严格了,朝着IOS权限靠拢了。看来Android也慢慢朝着封闭的方向发展了。如果 targetSdkVersion <23,就没有动态权限问题,但这不是长久之计,迟早要适配的。

Android将权限分为3种:

  • 普通权限(Normal Permissions)
  • 危险权限(Dangerous Permissions)
  • 特殊权限(Special Permissions)

如果 targetSdkVersion>=23 那么就要对 危险权限和 特殊权限动态申请

危险权限(Dangerous Permissions)

Permission Group Permissions
CALENDAR READ_CALENDAR <br/>WRITE_CALENDAR
CAMERA CAMERA
CONTACTS READ_CONTACTS <br/>WRITE_CONTACTS <br/>GET_ACCOUNTS
LOCATION ACCESS_FINE_LOCATION <br/>ACCESS_COARSE_LOCATION
MICROPHONE RECORD_AUDIO
PHONE READ_PHONE_STATE<br/> CALL_PHONE <br/>READ_CALL_LOG <br/>WRITE_CALL_LOG <br/>ADD_VOICEMAIL USE_SIP <br/>PROCESS_OUTGOING_CALLS
SENSORS BODY_SENSORS
SMS SEND_SMS <br/>RECEIVE_SMS <br/>READ_SMS<br/> RECEIVE_WAP<br/>_PUSH RECEIVE_MMS
STORAGE READ_EXTERNAL_STORAGE<br/> WRITE_EXTERNAL_STORAGE

危险权限基本都涉及到用户的隐私,Android系统将这些危险权限分为9组,

获取分组中某个权限的同时也就获取了同组中的其他权限

危险权限不仅需要在 AndroidManifest.xml中注册,还需要动态的申请权限

EasyPermisson 是Google对动态权限申请的封装,Google出品必属精品;

添加依赖

dependencies {
    compile ''pub.devrel:easypermissions:0.2.1''
}

AndroidManifest添加权限

<manifest>
<uses-permission android:name="android.permission.CAMERA" />
</manifest>

添加实现(以相机权限为例子)



public class MainActivity extends AppCompatActivity implements  EasyPermissions.PermissionCallbacks{


    private static final String TAG="tag";
    private static final int CAMERA_PERM = 0x100;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        grantCamera();
    }

    private void openCamera(){

    }
    @AfterPermissionGranted(CAMERA_PERM)
    private void grantCamera() {
        if (EasyPermissions.hasPermissions(MainActivity.this, Manifest.permission.CAMERA)) {
            //有此权限

            openCamera();
            
        } else {//没有此权限,需要重新申请
            EasyPermissions.requestPermissions(this, "请求camera权限", CAMERA_PERM, Manifest.permission.CAMERA);
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
    }

    @Override
    public void onPermissionsGranted(int requestCode, List<String> perms) {
     
       Log.d(TAG,"success");
    }

    @Override
    public void onPermissionsDenied(int requestCode, List<String> perms) {
        if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {

            new AppSettingsDialog.Builder(this, "点击确定去设置界面设置权限")
                    .setTitle("Title")
                    .setPositiveButton("确定")
                    .setNegativeButton("取消", null /* click listener */)
                    .setRequestCode(requestCode)
                    .build()
                    .show();
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == CAMERA_PERM) {//从设置权限界面返回
            if (EasyPermissions.hasPermissions(MainActivity.this, Manifest.permission.CAMERA)){

            }
        }
    }
}


@AfterPermissionGranted(CAMERA_PERM)注解是在用户同意授权后EasyPermissions再次回调注解的函数;AppSettingsDialog 是googgle封装的直接跳转到设置权限界面dialog;

特殊权限(Special Permissions)

Special Permissions
SYSTEM_ALERT_WINDOW 设置悬浮窗
WRITE_SETTINGS 修改系统设置

特殊权限比危险权限更危险,特殊权限需要在manifest中申请并且通过发送Intent让用户在设置界面进行勾选.


public class MainActivity extends AppCompatActivity implements  EasyPermissions.PermissionCallbacks{

    private static final int SYSTEM_ALERT_WINDOW_PERM = 0x101;
    private static final int WRITE_SETTINGS_PERM = 0x102;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        grantAlertWindow();
        grantWriteSettings();
    }

    private void grantAlertWindow(){
          Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION);
         intent.setData(Uri.parse("package:" + getPackageName()));
         startActivityForResult(intent, SYSTEM_ALERT_WINDOW_PERM);
    }

    private void grantWriteSettings(){
         Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
         intent.setData(Uri.parse("package:" + getPackageName()));
      startActivityForResult(intent, WRITE_SETTINGS_PERM );
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == SYSTEM_ALERT_WINDOW_PERM) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
               if ( Settings.canDrawOverlays(this)){//get

               }
            }
        }else if (requestCode == WRITE_SETTINGS_PERM) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                if (Settings.System.canWrite(this)) {//get

                }
            }
        }
    }
}

6.0动态加载权限用PermissionGen

6.0动态加载权限用PermissionGen

ndroid 6.0 新增加了运行时的动态添加权限,在此介绍一个第三方库,PermissionGen,可以很方便简洁的增加 6.0权限

 

首先给大家上  PermissionGen 库地址:https://github.com/lovedise/PermissionGen

 

下面给大家详细介绍它的使用:

1.引用库:

    在 app gradle 中引入:    

compile ''com.lovedise:permissiongen:0.0.6''

在需要权限检测的地方 调用:

   

  1. private void requestPhotoPermiss(){
  2. PermissionGen.with(mContext)
  3. .addRequestCode(PHOTO_PERMISS)
  4. .permissions(
  5. Manifest.permission.WRITE_EXTERNAL_STORAGE,
  6. Manifest.permission.CAMERA)
  7. .request();
  8. }

其中  PermissionGen.with(mContext) 中的 mContext 可以是 Activity,也可以是 Fragment  ,photo_permiss 这个常量是自己定义的,之后需要重写 

onRequestPermissionsResult

方法,重写如下:

  1. @Override
  2. public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
  3. PermissionGen.onRequestPermissionsResult( this, requestCode, permissions, grantResults);
  4. }


之后会异步返回两个方法,成功和失败,它们是用注解写的,方法里注解的requestCode 要和你之前定义的常量一致’,方法如下

 

  1. @PermissionSuccess(requestCode = PHOTO_PERMISS)
  2. public void requestPhotoSuccess(){
  3. //成功之后的处理
  4. //.......
  5. }
  6.  
  7. @PermissionFail(requestCode = PHOTO_PERMISS)
  8. public void requestPhotoFail(){
  9. //失败之后的处理,我一般是跳到设置界面
  10. AppUtil.goToSetting(mContext);
  11. }


goToSetting(Context Context)方法代码如下:

  1. /***
  2. * 去设置界面
  3. */
  4. public static void goToSetting(Context context){
  5. //go to setting view
  6. Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
  7. Uri uri = Uri.fromParts( "package", getPackageName(), null);
  8. intent.setData(uri);
  9. context.startActivity(intent);
  10. }


注意,在引入  Gen的库的时候,可能会出现同步失败的问题,出现如下类似问题:

Error:(7, 9) Attribute application@icon value=(@mipmap/ic_launcher) from AndroidManifest.xml:7:9 Error:(7, 9) Execution failed for task '':importdemo:processDebugManifest''. > Manifest merger failed : Attribute application@icon value=(@mipmap/ic_launcher) from AndroidManifest.xml:7:9 is also present at com.pnikosis:materialish-progress:1.0:13:9 value=(@drawable/ic_launcher) Suggestion: add ''tools:replace="android:icon"'' to <application> element a

 

这是由于 库中引用的 value 和 你项目中 mainfast 中的 value 发生冲突,解决办法如下:

在你的 application 中加上 类似的 tools replace 代码,然后在 xml 文件头 添上 tools 的声明,rebuild 你的项目即可解决冲突

 

最后要说的是,其实最近网上用的比较 多的库 是 AndPermission 库,但是我当时在引用的时候发现 他的 success 和 failed 方法没有调用,由于时间紧急,便用了这个比较老的库,但是库虽老,用起来还是不错的,对于 AndPermission 库的使用大家若出现和我一样的问题,欢迎讨论,再此附上 AndPermission 库地址:

    https://github.com/yanzhenjie/AndPermission

 

大家有什么交流的话,随时留言,谢谢诶

Android 6.0动态权限获取:一个EasyPermission的权限管理库

Android 6.0动态权限获取:一个EasyPermission的权限管理库

EasyPermission

README: 中文 | English

EasyPermission简介

这个是一个方便Android中权限管理的库,它使得申请权限和业务代码逻辑简单分离,不去关心权限的申请和回调。 源码地址:https://github.com/githubZYQ/easypermission

初衷

以前你是怎么管理Android的权限的?<br> 先判断有没有权限,再申请权限,最后onRequestPermissionsResult中检查一个个结果,再执行自己的业务逻辑?<br> 有一个打电话的权限,好多地方都要用,你每次使用打电话都要写一遍权限的判断申请和结果处理?<br> 那现在有一个好消息:<br> 这儿有一个方便Android中权限管理的库,你告诉它你需要的权限,然后再告诉它你想要执行什么,就可以了。

解释

1.module-easypermissionlib是EasyPermission 的核心源码code;<br> 2.module-app是EasyPermission的一个使用demo;<br>

集成方法

第一步. 添加JitPack 将其添加到根build.gradle中.

allprojects {
		repositories {
			...
			maven { url ''https://jitpack.io'' }
		}
	}

第二步. 添加依赖

dependencies {
	        implementation ''com.github.githubZYQ:easypermission:v1.0.0''
	}

第三步.调用 onRequestPermissionsResult()。 将要使用EasyPermission的Activity中的onRequestPermissionsResult,调用EasyPermissionHelper.getInstance().onRequestPermissionsResult即可;<br> 如果你有BaseActivity,那么只需要在BaseActivity中设置一次即可。

 @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        //使用EasyPermissionHelper注入回调
        EasyPermissionHelper.getInstance().onRequestPermissionsResult(requestCode, permissions, grantResults, this);
    }

功能使用

接下来看下怎么使用。

1.检测权限

只需要调用EasyPermission的hasPermission方法,支持多个权限同时传入。

EasyPermission.build().hasPermission(this, Manifest.permission.CALL_PHONE);

2.申请权限

如果你在应用启动时需要申请权限,而且并不关注权限的结果,<br> 只需要调用EasyPermission的requestPermission方法,支持多个权限传入。<br>

 EasyPermission.build().requestPermission(MainActivity.this, Manifest.permission.CALL_PHONE);

3.需要权限的结果

如果你需要知道申请权限后用户的选择结果,同时去执行自己的方法myVoid(),<br> 那么在onPermissionsAccess中去做就可以了,<br>onPermissionsDismiss是用户拒绝了权限的反馈。

 EasyPermission.build()
                .mRequestCode(RC_CODE_CALLPHONE)
                .mContext(NeedReslutActivity.this)
                .mPerms(Manifest.permission.CALL_PHONE)
                .mResult(new EasyPermissionResult() {
                    @Override
                    public void onPermissionsAccess(int requestCode) {
                        super.onPermissionsAccess(requestCode);
                        //做你想做的
                    }

                    @Override
                    public void onPermissionsDismiss(int requestCode, @NonNull List<String> permissions) {
                        super.onPermissionsDismiss(requestCode, permissions);
                        //你的权限被用户拒绝了你怎么办
                    }
                }).requestPermission();

4.有时用户拒绝了权限,而且禁止了弹出询问,我该怎么办?

同上,只要在onDismissAsk中,就可以得到被禁止的结果,同时你要注意onDismissAsk默认返回false<br> 如果你自己修改return true,将视为已经处理了禁止结果,将不再回调onPermissionsDismiss这个方法,<br> 调用openAppDetails方法,可以弹窗引导用户去设置界面设置权限,在onActivityResult中检查结果。

 EasyPermission easyPermission = EasyPermission.build()
                .mRequestCode(RC_CODE_CALLPHONE)
                .mContext(DismissAskActivity.this)
                .mPerms(Manifest.permission.CALL_PHONE)
                .mResult(new EasyPermissionResult() {
                    @Override
                    public void onPermissionsAccess(int requestCode) {
                        super.onPermissionsAccess(requestCode);
                        //做你想做的
                    }

                    @Override
                    public void onPermissionsDismiss(int requestCode, @NonNull List<String> permissions) {
                        super.onPermissionsDismiss(requestCode, permissions);
                        //你的权限被用户拒绝了你怎么办
                    }

                    @Override
                    public boolean onDismissAsk(int requestCode, @NonNull List<String> permissions) {
                        //你的权限被用户禁止了并且不能请求了你怎么办
                        easyPermission.openAppDetails(DismissAskActivity.this, "Call Phone - Give me the permission to dial the number for you");
                        return true;
                    }
                });
        easyPermission.requestPermission();

        
        @Override
            protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);
                if (EasyPermission.APP_SETTINGS_RC == requestCode) {
                    //设置界面返回
                    //Result from system setting
                    if (easyPermission.hasPermission(DismissAskActivity.this)) {
                        //做你想做的
                    } else {
                        //从设置回来还是没给你权限
                    }
        
                }
            }

拓展

仔细看了Android的权限使用过程,其实内心觉得,关于需要申请的权限的地方,都是使用的系统的API,<br>那么Android系统为何不能在APP使用某项权限时自己拦截咨询用户,<br>用户允许了就继续执行,不允许给开发者一个反馈,这样岂不是好? 我真心觉得权限管理、申请、判断都应该是系统完成的,让开发者去注册声明需要哪些权限可以理解,<br>但是动态的每次使用都要去判断、申请、回调等等真的对开发者不友好,希望后续系统能有所改进,<br>如果有能直接反馈给Google的Android团队的,希望将此声音带过去。<br> 如果你有更好的方案,比如HOOK技术跳过系统的权限检测等等,欢迎评论交流。

最后

祝所有人平安幸福、家庭和睦、身体健康。<br> 愿世界和平,不再被战争所累。<br> 有任何疑问,可以及时反馈给我;<br> 如果你觉得还不错,请点赞o( ̄▽ ̄)d。

Android EasyPermissions官方库高效处理权限相关教程

Android EasyPermissions官方库高效处理权限相关教程

介绍:

easypermission库是一个简化基本的系统权限逻辑的库,可用于在Android M或者更高版本上。

1 相关文档

官方文档:

https://github.com/googlesamples/easypermissions

运行时权限官方文档解释:

https://developer.android.com/training/permissions/requesting.html

2 为什么使用Easypermissions

Android M对权限系统进行了改变。Android M之前所需权限只需要在AndroidManifest中申请即可。但更新Android M系统后,部分“Dangerous Permission”需要在运行时询问申请。

导入EasyPermissions依赖库:

在Module的build.gradle中添加以下代码。

dependencies {
 compile 'pub.devrel:easypermissions:1.0.1'
}

依赖库配置完成后,开始使用。

使用步骤

1. 使用EasyPermissions检查权限:

权限可以是单个,也可以是一些列。在EasyPermission库中,使用EasyPermissions#hasPermissions(...)检查若干权限。

<code> /**
  *
  * @param context
  * return true:已经获取权限
  * return false: 未获取权限,主动请求权限
  */
 public static boolean checkPermission(Activity context,String[] perms) {
  return EasyPermissions.hasPermissions(context,perms);
 }</code>
EasyPermissions.hasPermissions():

第一个参数 : Context参数.例如,Activity对象。

第二个参数 : 一些系列的权限。例如,public final static String[] PERMS_WRITE ={Manifest.permission.WRITE_EXTERNAL_STORAGE};

2. 使用EasyPermissions请求权限:

检查后,发觉用户没有赋予权限,这时候需要代码请求权限,让用户同意。

在EasyPermission库中,使用EasyPermissions#requestPermissions,来请求权限。

<code><code><code> /**
  * 请求权限
  * @param context
  */
 public static void requestPermission(Activity context,String tip,int requestCode,String[] perms) {
  EasyPermissions.requestPermissions(context,tip,requestCode,perms);
 }</code></code></code>
EasyPermissions.requestPermissions():

第一个参数:Context对象 第二个参数:权限弹窗上的文字提示语。告诉用户,这个权限用途。 第三个参数:这次请求权限的唯一标示,code。 第四个参数 : 一些系列的权限。

3. EasyPermissions响应请求结果:

请求后,弹出系统权限弹窗,剩下是用户是否授权操作。权限结果是回调在Activity或者Fragment中的重写的onRequestPermissionsResult()方法中。

<code><code><code>public class MainActivity extends AppCompatActivity implements EasyPermissions.PermissionCallbacks{
 //.....省略部分代码。
 /**
  * 重写onRequestPermissionsResult,用于接受请求结果
  *
  * @param requestCode
  * @param permissions
  * @param grantResults
  */
 @Override
 public void onRequestPermissionsResult(int requestCode,@NonNull String[] permissions,@NonNull int[] grantResults) {
  super.onRequestPermissionsResult(requestCode,permissions,grantResults);
  //将请求结果传递EasyPermission库处理
  EasyPermissions.onRequestPermissionsResult(requestCode,grantResults,this);
 }
 /**
  * 请求权限成功。
  * 可以弹窗显示结果,也可执行具体需要的逻辑操作
  *
  * @param requestCode
  * @param perms
  */
 @Override
 public void onPermissionsGranted(int requestCode,List<string> perms) {
  ToastUtils.showToast(getApplicationContext(),"用户授权成功");
 }
 /**
  * 请求权限失败
  *
  * @param requestCode
  * @param perms
  */
 @Override
 public void onPermissionsDenied(int requestCode,"用户授权失败");
  /**
   * 若是在权限弹窗中,用户勾选了'NEVER ASK AGAIN.'或者'不在提示',且拒绝权限。
   * 这时候,需要跳转到设置界面去,让用户手动开启。
   */
  if (EasyPermissions.somePermissionPermanentlyDenied(this,perms)) {
   new AppSettingsDialog.Builder(this).build().show();
  }
 }
}</string></string></code></code></code>

将权限结果传递给EasyPermissions.onRequestPermissionsResult()来处理。、

EasyPermissions.onRequestPermissionsResult()方法:

第一个参数: 请求的code 第二个参数: 一些列的请求权限 第三个参数: 用户授权的结果 第四个参数: 权限回调监听器
这里不需要手写判断权限是否成功的逻辑操作,而会在EasyPermissions.PermissionCallbacks监听器中响应。

EasyPermissions.PermissionCallbacks接口:

onPermissionsGranted():

用户授权成功,接下来执行具体需要的逻辑操作

onPermissionsDenied():

用户授权失败,处理失败的逻辑。

注意:若是在权限弹窗中,用户勾选了'NEVER ASK AGAIN.'或者'不在提示',且拒绝权限。 这时候,需要跳转到设置界面去,让用户手动开启。

你可能并不满足,需要手动调用逻辑处理方法。EasyPermissions库为你考虑好了,具备强大之处。当用户同意权限后,可以不需要通过监听器方式来实现,直接调用相关的逻辑代码的方法。只需要使用@AfterPermissionGranted注解标注逻辑处理的方法。

4. @AfterPermissionGranted注解:

@AfterPermissionGranted注解为了提供方便,但可以添加也可以不添加,是可选的。

好处:

使用了该注解,当权限请求被用户同意后,会根据请求code来执行,相应的含有@AfterPermissionGranted注解的方法。

简化了请求成功操作流程,不需要在EasyPermissions.onRequestPermissionsResult()的回调监听器中请求成功的方法中,再次手动调用,获取权限后需要操作的逻辑代码。

以下代码,请求写入磁盘的权限,当用户同意权限后,弹出一个Toast弹窗的逻辑处理操作。

<code><code><code><code><code><code><code><code> @AfterPermissionGranted(Constance.WRITE_PERMISSION_CODE) 是可选的
 public void onPermissionsSuccess() {
  ToastUtils.showToast(getApplicationContext(),"用户授权成功");
 }</code></code></code></code></code></code></code></code>

当用户同意权限,该方法不需要手动调用,会匹配到的Constance.WRITE_PERMISSION_CODE请求码,自动执行。

5. 使用EasyPermissions处理权限被拒的情况:

在权限弹窗中,用户可能直接拒绝权限,下次权限请求依旧会弹出该权限弹窗。除此之外,还可以勾选'NEVER ASK AGAIN.'或者'不在提示',且拒绝权限,下次请求权限,弹窗不能弹出,无法让用户授权。这时候,需要跳转到设置界面去,让用户手动开启。

在EasyPermission库中,使用EasyPermissions.somePermissionPermanentlyDenied()来处理,是否勾选不再提示的选项。

<code><code><code><code><code><code><code><code><code> /**
  * 请求权限失败
  *
  * @param requestCode
  * @param perms
  */
 @Override
 public void onPermissionsDenied(int requestCode,perms)) {
   new AppSettingsDialog.Builder(this).build().show();
  }
 }
 @Override
 protected void onActivityResult(int requestCode,int resultCode,Intent data) {
  super.onActivityResult(requestCode,resultCode,data);
  switch (requestCode) {
   //当从软件设置界面,返回当前程序时候
   case AppSettingsDialog.DEFAULT_SETTINGS_REQ_CODE:
    //执行Toast显示或者其他逻辑处理操作
    break;
  } 
 }</string></code></code></code></code></code></code></code></code></code>

以上代码是,当无法弹出权限弹框,直接跳转到设置界面去,让用户手动开启权限。

当从设置界面返回时候,结果会在Activity或者Fragment中onActivityResult()响应。

运行效果,如下:

总结

以上所述是小编给大家介绍的Android EasyPermissions官方库高效处理权限相关教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程小技巧网站的支持!

Android EasyPermissions拍照权限管理申请

Android EasyPermissions拍照权限管理申请

1、在build.gradle中添加如下
//权限
implementation('pub.devrel:easypermissions:2.0.1') {
    exclude group: 'com.android.support'
}
2、在activity中使用
public void showCamera(int num) {
    String[] permissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE};
    if (!EasyPermissions.hasPermissions(context, permissions)) {
        //弹出一个对话框进行提示用户
        PermissionUtils.requestPermissions(context, 100, permissions, null);
    }else {
        openCamera(num);
    }
}

//判断权限的结果码
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    
    if(requestCode == 100) {
        //如果已经允许该权限
        if(grantResults[0] == PackageManager.PERMISSION_GRANTED) {
            openCamera(selectId);
        }else {
            //否则,提示该权限已经被禁止
            ToastUtil.shortshow(context,"未授予拍照权限");
        }
        return;
    }
}

关于EasyPermisson 动态权限使用例子动态权限设置的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于6.0动态加载权限用PermissionGen、Android 6.0动态权限获取:一个EasyPermission的权限管理库、Android EasyPermissions官方库高效处理权限相关教程、Android EasyPermissions拍照权限管理申请等相关知识的信息别忘了在本站进行查找喔。

本文标签: