AndroidEasyPermissions官⽅库⾼效处理权限相关教程介绍:
easypermission库是⼀个简化基本的系统权限逻辑的库,可⽤于在Android M或者更⾼版本上。
1 相关⽂档
官⽅⽂档:
运⾏时权限官⽅⽂档解释:
2 为什么使⽤Easypermissions
Android M对权限系统进⾏了改变。Android M之前所需权限只需要在AndroidManifest中申请即可。但更新Android M系统后,部分“Dangerous Permission”需要在运⾏时询问申请。
导⼊EasyPermissions依赖库:
在Module的adle中添加以下代码。
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) {
}</code></code></code>
第⼀个参数: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) {
//将请求结果传递EasyPermission库处理
}
/**
* 请求权限成功。
* 可以弹窗显⽰结果,也可执⾏具体需要的逻辑操作
*
* @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, List<string> perms) {
ToastUtils.showToast(getApplicationContext(), "⽤户授权失败");
/**
* 若是在权限弹窗中,⽤户勾选了'NEVER ASK AGAIN.'或者'不在提⽰',且拒绝权限。
* 这时候,需要跳转到设置界⾯去,让⽤户⼿动开启。
*/
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
new AppSettingsDialog.Builder(this).build().show();
}
}
}</string></string></code></code></code>
将权限结果传递给RequestPermissionsResult()来处理。、
第⼀个参数:请求的code 第⼆个参数:⼀些列的请求权限第三个参数:⽤户授权的结果第四个参数:权限回调
这⾥不需要⼿写判断权限是否成功的逻辑操作,⽽会在EasyPermissions.PermissionCallbacks中响应。
EasyPermissions.PermissionCallbacks接⼝:
onPermissionsGranted():
⽤户授权成功,接下来执⾏具体需要的逻辑操作
onPermissionsDenied():
⽤户授权失败,处理失败的逻辑。
注意:若是在权限弹窗中,⽤户勾选了'NEVER ASK AGAIN.'或者'不在提⽰',且拒绝权限。这时候,
需要跳转到设置界⾯去,让⽤户⼿动开启。
你可能并不满⾜,需要⼿动调⽤逻辑处理⽅法。EasyPermissions库为你考虑好了,具备强⼤之处。当⽤户同意权限后,可以不需要通过⽅式来实现,直接调⽤相关的逻辑代码的⽅法。只需要使⽤@AfterPermissionGranted注解标注逻辑处理的⽅法。
4. @AfterPermissionGranted注解:
@AfterPermissionGranted注解为了提供⽅便,但可以添加也可以不添加,是可选的。
好处:
使⽤了该注解,当权限请求被⽤户同意后,会根据请求code来执⾏,相应的含有@AfterPermissionGranted注解的⽅法。
简化了请求成功操作流程,不需要在RequestPermissionsResult()的回调中请求成功的⽅法中,再次⼿动调⽤,获取权限后需要操作的逻辑代码。
以下代码,请求写⼊磁盘的权限,当⽤户同意权限后,弹出⼀个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>android学习教程
当⽤户同意权限,该⽅法不需要⼿动调⽤,会匹配到的Constance.WRITE_PERMISSION_CODE请求码,⾃动执⾏。
5. 使⽤EasyPermissi理权限被拒的情况:
在权限弹窗中,⽤户可能直接拒绝权限,下次权限请求依旧会弹出该权限弹窗。除此之外,还可以勾选'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, List<string> perms) {
ToastUtils.showToast(getApplicationContext(), "⽤户授权失败");
/**
* 若是在权限弹窗中,⽤户勾选了'NEVER ASK AGAIN.'或者'不在提⽰',且拒绝权限。
* 这时候,需要跳转到设置界⾯去,让⽤户⼿动开启。
*/
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
new AppSettingsDialog.Builder(this).build().show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent 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官⽅库⾼效处理权限相关教程,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。在此也⾮常感谢⼤家对⽹站的⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论