使用PermissionsDispatcher轻松解决Android权限问题

PermissionsDispatcher-master使用详解.zip PermissionsDispatcher-master使用详解.zip 权限的详解, 权限使用详解。 可以参考一下, 可以拿来借鉴开发。 立即下载

之前也处理过6.0后的权限问题,直接处理很是麻烦。这次在github上搜到了关于权限星数最多的PermissionsDispatcher这个库,几个注释完美解决权限问题。

第一步 添加各种注释
  1. @RuntimePermissions 注释在需要权限的Activity和Fragment

    @RuntimePermissions
    public class StudentChallengeActivity extends BaseActivity implements StudentChallengeContract.View {
  2. @NeedsPermission 注释在需要权限的方法上后面,需要传入所需的权限

     @NeedsPermission(Manifest.permission.RECORD_AUDIO)
     void startRecord(ImageView img) {
         long currentTime = Calendar.getInstance().getTimeInMillis();
         if (currentTime - lastClickTime < 500) {
             ShowToast("时间太短");
         }
         if (!isPress && currWord < adapter.getItemCount() - 1) {
             img.setImageResource(R.drawable.btn_recod_style2);
             isPress = true;
             //
             adapter.getItem(currWord).setWordColor(2);
             adapter.notifyDataSetChanged();
    
             //录音
             evalUtil2.beginRe(sentenceList.get(currWord).getEng());
         }
     }
  3. @OnShowRationale 注释在向用户解释为什么需要这个权限的方法上。

     @OnShowRationale(Manifest.permission.RECORD_AUDIO)
     void showRationaleForRecord(final PermissionRequest request){
         new AlertDialog.Builder(this)
                 .setPositiveButton("好的", new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         request.proceed();
                     }
                 })
                 .setNegativeButton("不给", new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         request.cancel();
                     }
                 })
                 .setCancelable(false)
                 .setMessage("挑战需要录音权限,应用将要申请录音权限")
                 .show();
     }

    这里必须要传个PermissionRequest参数。
    request.proceed(); 调出系统申请权限的弹窗会执行@NeedsPermissio对应的方法
    request.cancel(); 会执行@OnPermissionDenied对应的方法
    如果想直接调用系统的

  4. @OnPermissionDenied 被拒绝后调用的方法

     @OnPermissionDenied(Manifest.permission.RECORD_AUDIO)
     void showRecordDenied(){
         ShowToast("拒绝录音权限将无法进行挑战");
     }
  5. @OnNeverAskAgain 勾选了不再提示禁止后调用的方法

     @OnNeverAskAgain(Manifest.permission.RECORD_AUDIO)
     void onRecordNeverAskAgain() {
         new AlertDialog.Builder(this)
                 .setPositiveButton("好的", new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         // TODO: 2016/11/10 打开系统设置权限
                         dialog.cancel();
                     }
                 })
                 .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                     @Override
                     public void onClick(DialogInterface dialog, int which) {
                         dialog.cancel();
                     }
                 })
                 .setCancelable(false)
                 .setMessage("您已经禁止了录音权限,是否现在去开启")
                 .show();
     }
第二步 make project一下

这个库会自动生成[Activity Name] + PermissionsDispatcher这样的一个类。当要调用使用权限的方法的时候,不直接调用我们直接添加了@NeedsPermission的方法,而是调用这个类生成的XXXWithCheck的方法。XXX就是添加了@NeedsPermission的方法名。

switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
                StudentChallengeActivityPermissionsDispatcher.startRecordWithCheck(StudentChallengeActivity.this,img);
    }

最后还要复写下onRequestPermissionsResult这个方法,里面写上生成类的onRequestPermissionsResult,类似如下:

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

执行的流程

需要权限的地方执行[Activity Name]PermissionsDispatcher.XXXWithCheck()
然后调用@OnShowRationale注释的方法,方法里必传的参数PermissionRequest request

  • 执行request.proceed()调用系统申请权限的弹窗;
    如果在系统申请弹窗中勾选了不在提示并且拒绝,会调用@OnNeverAskAgain的方法
  • 执行request.cancel()会调用@OnPermissionDenied的方法

PermissionsDispatcher库的地址

https://github.com/hotchemi/PermissionsDispatcher

科大讯飞(1): 环形6麦语音唤醒—驱动板上的接口 介绍环形麦阵列驱动板上的接口,及其疑问 阅读详情

相关推荐

STM32 烧录报错Invalid ROM Table

STM32 烧录报错Invalid ROM Table

热爱科技,物联,程序开发等 1731

Android 运行时权限获取-PermissionsDispatcher

前段时间在写着玩时用到了一个定位的库,但却总没能成功获取到地理位置,反而换了部手机却又可以了。想到两部手机的版本定位不了的是6.0的,而另一部是4.4的,所以应该是权限没有。查看日志后也确是如此,为此就记录一下关于6.0(api 23)之后的运行时权限的获取问题。虽然这个很早就有了,但是仍有部分应用其实还是没有对此做处理的。本篇是以一个开源库PermissionsDispatcher的使用来写这篇学

一朝天子一朝陈的博客 3891

CTF-Web学习笔记:服务端请求伪造(SSRF)篇

本文系统介绍了CTF比赛中SSRF漏洞的攻防技术。首先解析了SSRF的核心原理,即利用服务器对用户输入URL的未校验缺陷,诱导其访问内网资源。然后详细分析了5类常见CTF题型:文件读取、内网探测、云服务元数据窃取、协议绕过及组合漏洞利用。重点讲解了绕过URL过滤、利用特殊协议(如dict://、gopher://)等实战技巧,并通过一道SSRF+Redis的高阶题目演示完整攻击链。最后给出防御建议:严格校验输入URL、禁用危险协议、实施内网隔离等。

Deng7326的博客 1688

Android动态权限申请的简单使用(permissionsdispatcher)

Android对6.0及以上的版本做了更强的权限控制。如打电话这种需要动态申请。我推荐使用github上start最多的PermissionsDispatcher作为权限管理。 github地址为:https://github.com/permissions-dispatcher/PermissionsDispatcher 1,在build.gradle中做如下代码1--4步骤所示配置。 apply plugin: 'com.android.application' android { c

code_dream_wq的博客 619

Vienna整流器SVPWM调制:7扇区划分与中点电位平衡的MATLAB/Simulink实现解析

本文深入解析Vienna整流器的SVPWM调制技术,重点介绍7扇区划分与中点电位平衡的MATLAB/Simulink实现方法。通过详细的算法推导和仿真模型构建,帮助工程师掌握整流器闭环控制策略,优化功率转换效率。内容涵盖扇区判断逻辑、矢量作用时间计算及中点电位平衡的PID调节等核心技术要点。

weixin_33937499的博客 386

SVM-支持向量机学习(1):线性可分SVM的基本型

1. foreword先看的是李航老师的书第7章,比较传统按照以下三节展开: 线性可分SVM 线性SVM 非线性SVM SMO算法 李航老师讲东西向来不拖泥带水,但本节也几乎用了40页的篇幅,足见涉及内容之多。7月底硬着头皮啃了下来,边看边在笔记上摘抄标注,花了2天时间对SVM有了基本认识。一个月过去了,如今重新整理为博客,再看轻松许多,并不断对比西瓜书的内容,启望达到融会贯通。西瓜书此节明显节奏轻

鸟恋旧林的博客 8679

PermisssionDispatcher 在MIUI 11 上的坑&解决方案

被小米9的权限弹窗折磨了1天多,总算找到了解决方案,记录下来,以资来者 问题是这样的,由于现在对于个人隐私信息越发的关注,有很多应用市场要求APP在动态请求高危权限时,需要先弹出说明框向用户说明。 乍一看这个问题不难哈。哐哐哐,引入PermissionDispatcher框架,再封装一个弹窗逻辑,这事儿就完了。 很好,当我搞定这些后,在我的小米10青春版(MIUI12)上测了下,完美解决应用市场的权限合规问题。 然而,在小米9(MIUI11)上测试时,却发现在我动态请求权限前,会先弹出一个代倒计时的系统权限

kiba_zwei的博客 844

NotImplementedError: Cannot copy out of meta tensor; no data! Please use torch.nn.Module.to_empty()

Please use torch.nn.Module.to_empty() instead of torch.nn.Module.to()输出(llama) (base) [root@localhost home]# nvidia-smi Unable to determine the device handle for GPU0000:09:00.0: Unknown Error。这是典型的“孤儿进程”,但它还是。(僵尸进程),占用 GPU 资源。如果进程仍然不消失,并且。,这意味着它的父进程是。

m0_61636632的博客 2096

android+授权管理,Android权限管理PermissionsDispatcher2.3.2使用+原生6.0权限使用

PermissionsDispatcher2.3.2使用权限Gradle配置使用PermissionsDispatcher,需要在project的 build.gradle中添加(1)当Studio的版本在2.2之上在app module中的build.gradle中添加:dependencies {compile 'com.github.hotchemi:permissionsdispatche...

weixin_33520805的博客 418

Starlink vs Kuiper vs OneWeb:三大低轨卫星网络架构对比与实战应用场景解析

本文对比分析了Starlink、Kuiper和OneWeb三大低轨卫星网络架构的技术差异与商业应用场景。从轨道设计、通信性能到商业落地,详细解析了各系统在近地卫星网络领域的独特优势与挑战,为未来全球宽带服务格局提供专业见解。

weixin_29255731的博客 807

InsightFace(RetinaFace + ArcFace)人脸识别实战:从模型部署到Web服务构建

本文详细介绍了如何利用InsightFace框架,结合其集成的RetinaFace人脸检测与ArcFace人脸识别预训练模型,从零开始构建一个高性能的Web人脸识别服务。内容涵盖环境搭建、模型部署、核心代码解析(包括五点仿射对齐关键步骤)、FAISS向量检索集成以及基于FastAPI的Web服务开发,并提供了实战优化与常见问题排查指南,帮助开发者快速实现工业级应用。

weixin_29054245的博客 225

Android 13运行时权限变更一览

要不了多久,Android 13正式版就要发布了。其实就在几个月前,我写了一篇关于Android 13首个开发者体验版的全面介绍,详情可以参考。那么相比于首个开发者体验版,目前Android 13已经进入了平台稳定期阶段,也就是说API基本已经固定,不会再有什么大的修改了。于是我又重新回顾了一遍Android 13的重要新特性和行为变更,发现有一处重大变化在首个开发者体验版中几乎没有提及,那就是Android 13的运行时权限变更。因此,今天我就再写一篇Android 13的运行时权限变更一览,带你全面..

郭霖的专栏 6万+

【通信协议】GATT 与 BLE HID 工作原理详解

详细介绍BLE HID 跟GATT工作原理与两者的交互关系

以实战经验介绍行业知识 843

Android 6.0 的动态权限管理

转自:http://blog.csdn.net/qq_17766199/article/details/52013501当然不止上面一种实现方法,github上有许多大神开源的封装库,可以很方便的实现权限适配。作者推荐了两个库,大家根据需求选择: 1. PermissionsDispatcher2.鸿洋大神的MPermissions

libeyond_的专栏 450

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

解决Android运行时权限痛点:PermissionsDispatcher Plugin让开发更简单

**许可证**:Apache License 2.0

gitblog_00829的博客 329

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

PermissionsDispatcher插件终极指南:Android权限管理的简单解决方案

PermissionsDispatcher插件是一款专为Android开发者设计的IntelliJ插件,它通过注解的方式简化了Android运行时权限的处理流程。作为Android权限管理的终极工具,这个插件能够让你告别繁琐的手动权限申请代码,大幅提升开发效率。🚀 ## 为什么需要PermissionsDispatcher? 在Android 6.0(API 23)之后,Google引入了运

gitblog_00967的博客 1094

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Android悬浮窗权限终极解决方案:PermissionsDispatcher实战避坑指南

PermissionsDispatcher是一款专为Android平台设计的权限管理库,能够帮助开发者轻松处理复杂的权限请求逻辑,尤其是针对SYSTEM_ALERT_WINDOW这类特殊权限。本文将详细介绍如何使用PermissionsDispatcher解决悬浮窗权限问题,避免常见陷阱,让你的应用权限管理更加高效可靠。 ## 📚 特殊权限简介 PermissionsDispatcher特别

gitblog_00401的博客 1134

解决Android权限请求难题:PermissionsDispatcher异常场景全解析

PermissionsDispatcher是一个强大的Android权限请求库,它通过注解处理器自动生成权限请求代码,帮助开发者轻松处理Android运行时权限。无论是处理普通权限还是特殊权限,PermissionsDispatcher都能提供简洁优雅的解决方案,让开发者专注于业务逻辑而非权限处理细节。 ## 一、PermissionsDispatcher核心功能 PermissionsDis

gitblog_00825的博客 530

PermissionsDispatcher使用详解

PermissionsDispatcher是一个基于注解、帮助开发者简单处理Android 6.0系统中的运行时权限的开源库。避免了开发者编写大量繁琐的样板代码。 开源地址:https://github.com/permissions-dispatcher/PermissionsDispatcher 文档介绍:http://hotchemi.github.io/PermissionsDispatc...

编程之美 1552

PermissionsDispatcher:简化Android运行时权限处理的利器

PermissionsDispatcher 是一个专为 Android 开发者设计的开源库,旨在简化运行时权限的处理流程。随着 Android 6.0(API 级别 23)引入的运行时权限机制,开发者需要在应用中手动处理权限请求和用户反馈,这往往会导致代码冗长且难以维护。PermissionsDispatcher 通过提供一个基于注解的简洁 API,帮助开发者轻松管理运行时权限,从而保持代码的整洁...

gitblog_00012的博客 446

如何快速集成PermissionsDispatcher Plugin到IntelliJ/Android Studio?新手必备安装教程

PermissionsDispatcher Plugin是一款专为Android开发者设计的IntelliJ/Android Studio插件,能够帮助开发者轻松处理Android运行时权限,自动生成权限请求相关代码,极大提升开发效率。本文将为新手提供详细的安装与配置指南,让你快速掌握这一实用工具。 ## 📋 准备工作:确认开发环境 在开始集成前,请确保你的开发环境满足以下条件: - Int

gitblog_01062的博客 287

PermissionsDispatcher 使用教程

PermissionsDispatcher 是一个基于注解处理器的 Android 权限处理库,旨在简化运行时权限请求的流程。它通过提供一组简单的注解和方法,帮助开发者更轻松地处理 Android 6.0 及以上版本的运行时权限。 ## 项目快速启动 ### 添加依赖 首先,在项目的 `build.gradle` 文件中添加 PermissionsDispatcher 的依赖: ```gr...

gitblog_00534的博客 492
上一篇: Android应用开发相关下载资源(2016/07/24更新)
下一篇: GridView仿微信添加多图效果
dwf_学海无涯
博客等级 码龄10年 42粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值