返回顶部
首页 > 资讯 > 移动开发 >Android权限处理--Permissionsdispatcher
  • 467
分享到

Android权限处理--Permissionsdispatcher

Android 2022-06-06 13:06:04 467人浏览 安东尼
摘要

1. @RuntimePermissions Android权限常识(来源于Google官方文档) 如果设备运行的是 Android 6.0(api 级别 23)或更高版本,

1. @RuntimePermissions

Android权限常识(来源于Google官方文档)

如果设备运行的是 Android 6.0(api 级别 23)或更高版本,并且应用的 targetSdkVersion 是 23 或更高版本,则应用在运行时向用户请求权限。用户可随时调用权限,因此应用在每次运行时均需检查自身是否具备所需的权限。

如果设备运行的是 Android 5.1(API 级别 22)或更低版本,并且应用的 targetSdkVersion 是 22 或更低版本,则系统会在用户安装应用时要求用户授予权限。如果将新权限添加到更新的应用版本,系统会在用户更新应用时要求授予该权限。用户一旦安装应用,他们撤销权限的唯一方式是卸载应用。

对于启动页对于权限的处理。主要是采用 github 开源框架----->>>> permissionsdispatcher (star ---->>>  8K+)

框架应用于android权限方面,使用方法如下:

框架支持的注释,在项目需要引入的,如下:

@RuntimePermission : 注册Activity 或Fragment(此框架两者都支持)来处理权限

@NeedPermission : 注释执行需要一个或者多个权限的操作的方法

@OnShowRationale : 注释一个解释为什么需要权限的方法,它传入一个PermissionRequest对象,

                                    该对象可用于在用户输入时继续或中止当前的权限请求;

@OnPermissionDenied : 注释如果用户未授予权限则调用的方法 ;

@OnNeverAskAgain : 如果用户选择让设备“永不再询问”权限,则注释一个被调用的方法

1) gradle引入框架,AndroidMainfest增加要申请的权限

AndroidManifest增加权限---->> build.gradle(app):

implementation("com.GitHub.hotchemi:permissionsdispatcher:3.1.0") {
//if you don't use android.app.Fragment you can exclude support for them
    exclude module: "support-v13"
}
annotationProcessor "com.github.hotchemi:permissionsdispatcher-processor:3.1.0"

2) 选择处理权限的载体

大部分情况下,我们会使用Activity来处理权限的问题,例如当前项目,在启动页Activity进行权限处理;

代码如下:

@RuntimePermissions  (加入此注释)
public class  MainActivity extends AppCompatActivity{
@NeedsPermission(Manifest.permission.CAMERA) (假如当前需要申请相机权限,程序需要请求什么权限都在此添加)
void showCamera() {
    三秒后跳转
}
@OnShowRationale(Manifest.permission.CAMERA)
void showRationaleForCamera(final PermissionRequest request) {
    new AlertDialog.Builder(this)
        .setMessage(R.string.permission_camera_msg)
        .setPositiveButton(R.string.button_allow, (dialog, button) ->   
          request.proceed())
        .setNegativeButton(R.string.button_deny, (dialog, button) ->
          request.cancel())
        .show();
}
@OnPermissionDenied(Manifest.permission.CAMERA) (用户未授予权限,则此时再次申请权限)
    void showDeniedForCamera() {
        用户未授予权限,则此时再次申请权限
}
@OnNeverAskAgain(Manifest.permission.CAMERA) (上次选择禁止并勾选:下次不在询问)
    void showNeverAskForCamera() {
        弹出对话框,取消则退出程序(APP),确定则跳转到 权限设置页面,进行权限设置
    }
}

    链接:跳转到指定app权限设置页面,代码如下(可以将其封装到工具类中,使用的时候直接调用):   

public static void GotoAppSettingPage(Context context) {
    Intent localIntent = new Intent();
    localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
    localIntent.setData(Uri.fromParts("package", context.getPackageName(), null));
    context.startActivity(localIntent);
}

3) 在onCreate()方法中,委派权限处理以生成的方法showCameraWithPermissionCheck

     onCreate中假如以下代码: 

  启动页为MainActivity时,
  MainActivityPermissionsDispatcher.showCameraWithPermissionCheck(this);
  启动页为StartupActivity时,
  StartupActivityPermissionsDispatcher.showMainViewWithPermissionCheck(this);

4)重写 onRequestPermissionsResult()方法

     在MainActivity(或者StartupActivity)中重写 onRequestPermissionsResult()方法;并在super方法之后调用,以下代码:

 (处理Activity为MainActivity时)
  MainActivityPermissionsDispatcher.onRequestPermissionsResult(this,requestCode,grantResults);
 (处理Activity为StartupActivity时)
  StartupActivityPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults);
2.对于启动MainActivity时使用一下模式的解答
 intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK)
上述行代码主要用于 解决界面重复创建问题 。
Intent.FLAG_ACTIVITY_CLEAR_TOP:如果在栈中发现存在Activity实例,则清空这个实例之上的Activity,使其处于栈顶
Intent.FLAG_ACTIVITY_NEW_TASK:根据Activity Affinity判断是否需要创建新的Task,然后再创建新的Activit实例放进去。

如果小伙伴发现书写中出现错误,或者有更好的办法解决此问题,欢迎留言和私信。

    


作者:小小小小枫叶


--结束END--

本文标题: Android权限处理--Permissionsdispatcher

本文链接: https://lsjlt.com/news/29203.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android权限处理--Permissionsdispatcher
    1. @RuntimePermissions Android权限常识(来源于Google官方文档) 如果设备运行的是 Android 6.0(API 级别 23)或更高版本,...
    99+
    2022-06-06
    Android
  • Android 权限(permission)整理
    在Android的设计中,资源的访问或者网络连接,要得到这些服务都需要声明其访问权限,否则将无法正常工作。在Android中这样的权限有很多种,这里将各类访问权限一一罗列出来,...
    99+
    2022-06-06
    Android
  • Android - 权限
    文章目录基础PackageManager检查权限请求权限流程处理权限请求响应常用权限权限清单 Manifest.permission拨打电话权限...
    99+
    2022-06-06
    Android
  • Android 权限(一):权限大全
    1. 前言         Android 中应用权限有助于保护对以下数据和操作的访问/执行权限,从而为保护用户隐私提供支持: 1. 受限数据,例如系统状态和用户的联系信息    2. 受限操作,例如连接到已配对的设备并录制音频 本篇文章主...
    99+
    2023-09-01
    Andorid权限
  • Android 6.0权限申请详解及权限资料整理
    在android 6.0开始,部分的权限需要我们动态申请,也就是说当我们的打开app的时候系统不会主动像您申请app所需要的部分权限,需要客户在使用app的时候主动的去申请。 ...
    99+
    2022-06-06
    Android
  • Android 应用中怎么获取判断处理权限
    这篇文章给大家介绍Android 应用中怎么获取判断处理权限,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。主要用到的几个方法://检查权限int checkSelfPermission(String)//申请权限voi...
    99+
    2023-05-31
    android roi
  • Android权限管理之Permission权限机制及使用详解
    前言: 最近突然喜欢上一句诗:“宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒。” 哈哈~,这个和今天的主题无关,最近只要不学习总觉得生活中少了点什么,所以想着围绕着最近...
    99+
    2022-06-06
    Android
  • 详解Android权限管理之Android 6.0运行时权限及解决办法
    前言: 今天还是围绕着最近面试的一个热门话题Android 6.0权限适配来总结学习,其实Android 6.0权限适配我们公司是在今年5月份才开始做,算是比较晚的吧,不过现...
    99+
    2022-06-06
    运行 Android
  • Android权限控制之自定义权限
    天哪,这篇文章终于说道如何自定义权限了,左盼右盼,其实这个自定义权限相当easy。为了方便叙述,我这边会用到两个app作为例子示范。 Permission App: used ...
    99+
    2022-06-06
    自定义 Android
  • Android 中的权限
    关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、权限分类3.1 安装时权限...
    99+
    2023-12-23
    android gitee
  • 后台管理系统的权限及vue处理权限实例分析
    这篇文章主要介绍了后台管理系统的权限及vue处理权限实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇后台管理系统的权限及vue处理权限实例分析文章都会有所收获,下面我们一...
    99+
    2024-04-02
  • Android端权限隐私的合规化处理实战记录
    目录是什么 为什么 具体实践 一.Android各版本对权限的适配处理 1.1 早期的注册权限 1.2 动态权限授予 1.3 READ_PHONE_STATE权限的变化 二.隐私信息...
    99+
    2024-04-02
  • Android权限问题整理,非常全面!
      Android权限系统非常庞大,我们在Android系统中做任何操作都需要首先获取Android系统权限,本文记录了所有的Android权限问题,整理一下分享给大家。 ...
    99+
    2022-06-06
    Android
  • Android中EasyPermissions官方库高效处理权限的示例分析
    这篇文章给大家分享的是有关Android中EasyPermissions官方库高效处理权限的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。介绍:easypermission库是一个简化基本的系统权限逻辑的...
    99+
    2023-05-30
    android
  • Android申请相机权限和读写权限实例
    开发一个相机应用,需要申请三个权限:相机、读文件、写文件。 1、在AndroidManifest.xml中添加 <uses-permission android:name="a...
    99+
    2024-04-02
  • Android权限列表(基于Android 14)
    一、简介 权限的目的为了保护用户隐私,应用在访问一些敏感数据时,必须事先取得用户授权后才能使用,比如:比如读取sdcard、访问通讯录等。 在Android6.0之前的设备上,系统不会提醒用户正在获取...
    99+
    2023-09-01
    android 权限
  • Android动态获取权限
    Android权限分为普通权限和危险权限两种。普通权限系统会自动授权,而危险权限则需要用户手动授权,否则无法使用相关功能。 危险权限的获取 以调...
    99+
    2022-06-06
    Android
  • android 权限大全 分享
    访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,读取或写入登记check-in数据库属性表的权限 获取错略位置 and...
    99+
    2022-06-06
    Android
  • Android 获取网络权限
    在 AndroidManifest.xml 加入网络权限 在  application 中加入如下代码 android:requestLegacyExternalStorage="true" android:networkS...
    99+
    2023-09-02
    android android studio ide
  • Android---动态权限申请
    目录 权限分类 动态权限核心函数 简易实现案例 完整代码     Google 在 Android 6.0 开始引入了权限申请机制,将所有权限分成了正常权限和危险权限。App 每次在使用危险权限时需要动态的申请并得到用户的授权才能使用。 权...
    99+
    2023-09-05
    android 数码相机
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作