时间:2021-05-20
1. 常规使用
请求一个权限,然后接收结果回调
请求多个权限
只关心权限被允许(未被允许)的回调
2. RationaleRender使用
如果你想向用户解释请求权限的原因,你可以使用setRationaleRender方法
HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE) .{省略回调设置代码} .setRationaleRender("为了确保功能的正常使用,请允许接下来的权限请求申请。") .run()如果你想自定义RationaleRender的样式,比如:
HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE) .{省略回调设置代码} .setRationaleRender(object:RationaleRender{ override fun show(ctx: Context, permission: List<String>, process: RationaleRender.Process) { //自定义使用了一个`Toast`展示信息。 Toast.makeText(ctx,"为了确保功能的正常使用,请允许接下来的权限请求申请。",Toast.LENGTH_SHORT).show() //**为了确保后续的流程继续执行,你需要在适当的时候调用process的`onNext`或`onCancel`方法** process.onNext() //onNext()表示继续后面的执行 //onCancel会取消流程的执行,并且会最终回调onPermissionDenied方法 } }) .run()关于此回调的触发说明:
3. SettingRender使用
如果你想向用户解释请求权限的原因,你可以使用setRationaleRender方法
HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE) .{省略回调设置代码} .setSettingRender("无法使用外部存储,请设置权限以便使用。") .run()如果你想自定义SettingRender的样式,比如:
HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE) .{省略回调设置代码} .setSettingRender(object:SettingRender{ override fun show(ctx: Context, permission: List<String>, process: SettingRender.Process) { //自定义使用了一个`Toast`展示信息。 Toast.makeText(ctx,"无法使用外部存储,请设置权限以便使用。",Toast.LENGTH_SHORT).show() //**为了确保后续的流程继续执行,你需要在适当的时候调用process的`onNext`或`onCancel`方法** process.onNext() //onNext()表示继续后面的执行,HaloPermission将打开系统应用权限设置界面 //onCancel会取消流程的执行,不会打开系统应用权限设置界面,最终会回调onPermissionDenied方法 } }) .run()如果你觉得HaloPermission打开的权限设置界面不是您所满意的,你可以重写SettingRender的getCustomSettingIntent方法提供一个Intent,如果返回null则将使用HaloPermission的默认方式打开:
HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE) .{省略回调设置代码} .setSettingRender(object:SettingRender{ override fun show(ctx: Context, permission: List<String>, process: SettingRender.Process) { {省略的代码} } //自定义SettingIntent override fun getCustomSettingIntent(ctx: Context): Intent? { return super.getCustomSettingIntent(ctx) } }) .run()4. 自定义权限校验规则
两步即可实现
//1. 创建自定义PermissionChecker class CustomChecker:PermissionChecker{ override fun isPermissionGranted(ctx: Context, permission: String): Boolean { {使用你的规则} } } //2. 使用自定义规则 HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE) .{省略常规代码} .run(CustomChecker())除非你非常有把握,否则不建议使用自定义权限校验规则,因为HaloPermission会尽可能的去适配和兼容
5. 自定义请求方式
HaloPermission默认使用ShadowActivity的形式请求权限,当然只要你愿意,您可以使用Fragment的形式去实现,HaloPermission本身也提供了Fragment的请求方式,但是最终去掉了这部分的实现,因为对于Fragment的使用机制,如果使用不当,可能会出现一些奇怪的问题,我想这是你我都不愿看到的。同样的,两步即可实现自定义请求方式
//1. 创建自定义PermissionCaller class CustomCaller: PermissionCaller{ override fun requestPermission(ctx: Context, responder: PermissionResponder, vararg permision: String) { {可以仿造HaloPermission实现,最终要在适当的时候调用responder让流程正常进行} } } //2. 使用自定义规则 HoloPermission.with(this,Manifest.permission.WRITE_EXTERNAL_STORAGE) .{省略常规代码} .run(CustomCaller())以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
为Android程序申请权限注意Android系统提供为程序提供了权限申请,即在manifest中使用uses-permission来申请即可.实现起来非常简单
使用记录访问权限什么是使用记录访问权限呢?这是在Android5.0(Apilevel21)新添加的,通过该权限我们可以查看设备上其它应用使用情况的统计信息等。
Android.permission.MODIFY_PHONE_STATE权限限制已经改为系统权限普通应用程序已经无法调用所以网上找到的那些如何使用androi
前言:上篇重点学习了Android6.0的运行时权限,今天还是围绕着Android6.0权限适配来总结学习,这里主要介绍一下我们公司解决Android6.0权限
把从网络获取的图片数据保存在SD卡上,先把权限都加上网络权限android.permission.INTERNETSD卡读写权限android.permissi