安卓简易权限调用

EasyPermission

简易权限调用

功能&特性

  • 1、自动判断权限所在的请求周期,自动回调
    • 从未请求,调用ActivityCompat.requestPermissions。
    • 仅被拒绝,请求权限任意次,但每次都拒绝,调用ActivityCompat.requestPermissions。
    • 已授权,无操作。
    • 永久拒绝,调用相关厂商的接口去该应用的权限配置页。
  • 2、根据所处周期自动弹出提示窗口,自动回调
    • 在用户首次请求时,不弹窗
    • 用户首次请求后拒绝又请求,弹窗
    • 永久拒绝后又请求,弹窗
  • 3、支持自定义权限请求周期,自动回调
  • 4、支持强制请求权限,直到用户点击弹窗上的退出按钮,自动回调
  • 5、支持请求一些特性,自动回调
    • 后台运行
    • 电池优化
  • 6、不需要在Activity里配置回调方法
  • 7、原理是动态注册和监听Activity生命周期

导入依赖

	//https://github.com/isong0623/EasyPermissionimplementation 'com.github.isong0623:EasyPermission:1.0'

初始化

在Application的onCreate方法中调用如下函数

import android.Manifest;private void initEasyPermission(){PermissionContext.set(this);//以下内容用于 展示当用户拒绝而又请求时 或 用户永久拒绝时//弹出的提示元信息//配置权限名称PermissionConfigure.setPermissionName(Manifest.permission.CAMERA,"相机");PermissionConfigure.setPermissionMessage(Manifest.permission.CAMERA, "为了拍照");
//配置权限提示信息PermissionConfigure.setPermissionName(Manifest.permission.WRITE_EXTERNAL_STORAGE,"读取文件");PermissionConfigure.setPermissionMessage(Manifest.permission.WRITE_EXTERNAL_STORAGE, "为了好玩");}

请求各种权限

普通执行一次

EasyPermission.permissions(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE).setAccuratelyCallbackEnable(true).onGranted(new PermissionAction<List<String>>() {@Overridepublic void onAction(List<String> data) {Toast.makeText(MainActivity.this, "请求成功!", Toast.LENGTH_SHORT).show();}}).onDenied(new PermissionAction<List<String>>() {@Overridepublic void onAction(List<String> data) {Toast.makeText(MainActivity.this, "请求失败!", Toast.LENGTH_SHORT).show();}}).onDeniedOnce(new PermissionAction<List<String>>() {@Overridepublic void onAction(List<String> data) {Toast.makeText(MainActivity.this, "请求失败,一次!", Toast.LENGTH_SHORT).show();}}).onDeniedAlways(new PermissionAction<List<String>>() {@Overridepublic void onAction(List<String> data) {Toast.makeText(MainActivity.this, "请求失败,总是!", Toast.LENGTH_SHORT).show();}}).requestOnce();

执行到某个周期

以下代码将会从[任意状态]开始到用户永久拒绝将会执行到跳转[设置页返回]结束

EasyPermission.permissions(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE).onGranted(new PermissionAction<List<String>>() {@Overridepublic void onAction(List<String> data) {Toast.makeText(MainActivity.this, "请求成功!", Toast.LENGTH_SHORT).show();}}).onDenied(new PermissionAction<List<String>>() {@Overridepublic void onAction(List<String> data) {Toast.makeText(MainActivity.this, "请求失败!", Toast.LENGTH_SHORT).show();}}).requestFully();

强制执行,直到用户退出程序

  EasyPermission.permissions(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE).onGranted(new PermissionAction<List<String>>() {@Overridepublic void onAction(List<String> data) {Toast.makeText(MainActivity.this, "请求成功!", Toast.LENGTH_SHORT).show();}}).requestForce();

请求某些特性

注意:暂不支持自启动,因为没有办法判断程序是否能够自启动

请求某些特性一次

EasyFeature.features(Feature.Background, Feature.Battery).onDenied(new PermissionAction<List<Feature>>() {@Overridepublic void onAction(List<Feature> data) {Toast.makeText(MainActivity.this, "请求失败!", Toast.LENGTH_SHORT).show();}}).onGranted(new PermissionAction<List<Feature>>() {@Overridepublic void onAction(List<Feature> data) {Toast.makeText(MainActivity.this, "请求成功!", Toast.LENGTH_SHORT).show();}}).request();

强制请求某些特性,直到用户退出程序

     EasyFeature.features(Feature.Background, Feature.Battery).onGranted(new PermissionAction<List<Feature>>() {@Overridepublic void onAction(List<Feature> data) {Toast.makeText(MainActivity.this, "请求成功!", Toast.LENGTH_SHORT).show();}}).requestForce();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/54981.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

QT----Creater14.0,qt5.15无法启动调试,Launching GDB Debugger报红

问题描述 使用QT Creater 14.0 和qt5.15,无法启动调试也没有报错,加载debugger报红 相关文件都有 解决方案 尝试重装QT,更换版本5.15.2,下载到文件夹,shift鼠标右键打开powershell输入 .\qt-online-installer-windows-x64-4.8.0.exe --mirror http://mirrors.ustc.edu.cn…

解决fatal: unable to access ‘https://........git/‘: Recv failure: Operation time

目录 前言 解决方法一 解决方法二 解决方法三 解决方法四 总结 前言 在使用 Git 进行代码拉取时&#xff0c;可能会遇到连接超时的问题&#xff0c;特别是在某些网络环境下&#xff0c;例如公司网络或防火墙严格的环境中。这种情况下&#xff0c;Git 无法访问远程仓…

OpenHarmony(鸿蒙南向)——平台驱动指南【DAC】

往期知识点记录&#xff1a; 鸿蒙&#xff08;HarmonyOS&#xff09;应用层开发&#xff08;北向&#xff09;知识点汇总 鸿蒙&#xff08;OpenHarmony&#xff09;南向开发保姆级知识点汇总~ 持续更新中…… 概述 功能简介 DAC&#xff08;Digital to Analog Converter&…

LLM - 使用 RAG (检索增强生成) 多路召回 实现 精准知识问答 教程

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/142629289 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 RAG (R…

windows下 Winobj.exe工具使用说明c++

1、winobj.exe工具下载地址 WinObj - Sysinternals | Microsoft Learn 2、接下来用winobj.exe查看全局互斥&#xff0c;先写一个小例子 #include <iostream> #include <stdlib.h> #include <tchar.h> #include <string> #include <windows.h>…

VS2017安装Installer Projects制作Setup包

下载安装扩展包 VS2017默认未安装Installer Projects Package&#xff0c;需要联机下载&#xff1a; 也可网页上下载离线InstallerProjects.vsix文件&#xff1a; https://visualstudioclient.gallerycdn.vsassets.io/extensions/visualstudioclient/microsoftvisualstudio20…

FPGA IP 和 开源 HDL 一般去哪找?

在FPGA开发的世界中&#xff0c;IP核和HDL模块是构建复杂数字系统的基石。它们如同乐高积木&#xff0c;让开发者能够快速搭建和重用经过验证的电路功能。但你是否曾感到迷茫&#xff0c;不知道从哪里寻找这些宝贵的资源&#xff1f;本文将为你揭开寻找FPGA IP核和HDL模块资源的…

Tesla T4 P2P测试

Tesla T4 P2P测试 一.测试环境二.测试步骤1.获取设备信息2.查看PCIE拓扑结构3.选择9B、9E这二张4.查看逻辑设备ID5.设置环境变量(需要用逻辑设备ID,通过UUID跟smi看到的物理ID关联)6.不同地址的原子操作2.P2P与非P2P的性能差异3.GPU带宽测试 Tesla T4 P2P测试 通过物理ID找到逻…

2024PT展,现场精华

9月25-27日&#xff0c;2024年国际信息通信展&#xff08;简称PT展&#xff09;在北京国家会议中心召开。 小枣君去了现场&#xff0c;也拍了一些照片&#xff0c;特此分享给大家。 会场离“奥林匹克公园”地铁站很近&#xff1a; Logo设计得还是挺好看的&#xff1a; 熟悉的场…

一区黏菌算法+双向深度学习+注意力机制!SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测

一区黏菌算法双向深度学习注意力机制&#xff01;SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元融合注意力机制多变量回归预测 目录 一区黏菌算法双向深度学习注意力机制&#xff01;SMA-BiTCN-BiGRU-Attention黏菌算法优化双向时间卷积双向门控循环单元…

探索机器人快换盘技术的未来之路:智能化与协作的革新

在当今快速发展的科技时代&#xff0c;机器人已成为众多领域不可或缺的得力助手。其中&#xff0c;机器人快换盘技术作为提升机器人灵活性和应用广度的重要技术&#xff0c;正经历着前所未有的变革与创新。下面请随我们一起深入探讨这一技术的未来发展趋势。 一、人工智能&…

<<迷雾>> 第 4 章 电子计算机发明的前夜 示例电路

莫尔斯电报示意图 info::操作说明 鼠标单击开关切换开合状态 通电后, 线圈产生磁力从而将铁片开关(衔铁臂)吸引下来 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/cyjsjdmw-examples/assets/circuit/cyjsjdmw-ch04-01-morse-te…

Shopline对接需要注意的问题

Shopline对接是一项复杂而细致的工作&#xff0c;为了确保对接的顺利进行&#xff0c;并保证系统的稳定性和可靠性&#xff0c;需要注意以下几个方面。 1.API文档的详细阅读 功能理解&#xff1a; 仔细阅读Shopline提供的API文档&#xff0c;全面了解每个接口的功能、参数、返…

初始docker以及docker的基本使用!!!

文章目录 虚拟化技术Docker/podman 命令通用命令查看docker 当前版本管理docker运行 镜像操作[image]列出本地所有镜像拉取镜像删除镜像把docker中的镜像打包成文件把镜像文件加载到docker中上传镜像 容器操作[container]创建容器docker run的参数选项列出所有容器启动容器停止…

安防区域保护:无线电干扰设备技术详解

在安防区域保护中&#xff0c;无线电干扰设备技术扮演着重要角色&#xff0c;它主要用于通过发射特定频率的无线电波来干扰无人机或其他无线电设备的通信链路、导航信号或控制信号&#xff0c;以达到削弱、阻断甚至控制这些设备运行的目的。以下是对无线电干扰设备技术的详细解…

【GAN】生成对抗网络Generative Adversarial Networks理解摘要

【Pytorch】生成对抗网络实战_pytorch生成对抗网络-CSDN博客 【损失函数】KL散度与交叉熵理解-CSDN博客 [1406.2661] Generative Adversarial Networks (arxiv.org) GAN本质是对抗或者说竞争&#xff0c;通过生成器和鉴别器的竞争获取有效地结果&#xff0c;换句话说&#xff0…

每日一练 2024.9.29(2)

目录 解题思路与代码实现 题目分析 一、解题策略 关键步骤&#xff1a; 二、代码实现 三、代码解析 四、复杂度分析 五、运行示例 示例1&#xff1a; 示例2&#xff1a; 六、总结 解题思路与代码实现 题目分析 这道题目要求我们找到字符串列表 strs 中的相似字符组…

C++——vector

1.简介 2.成员函数 2.1构造函数 void test_vector1() {//1.无参构造vector<int> v1;cout << v1.capacity() << endl;//2.传参构造vector<int> v2(10,1);//3.迭代器构造vector<int> v3(v2.begin(), v2.end());//也可以使用其它容器的迭代器区间来…

scrapy快速上手

安装 除了scrapy本身还要安装两个库 pip install scrapy pip install pywin32 pip install wheel 创建项目 在要创建项目的地方打开powershell scrapy startproject 项目名 我们得到这样的项目结构&#xff0c;功能如下 scrapy.cfg 项目的主配置信息 …

LeetCode[中等] 17. 电话号码的字母组合

给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 思路 回溯法 log&#xff1a;当前结果数组&#xff1b;level&#xff1a…