Android:权限permission申请示例代码
Android应用项目每次最开始都要进行权限申请,贴一下权限申请的示例代码,方便后续Ctrl C+V使用
1.AndroidManifest.xml 配置要申请的权限
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
2.示例代码:
可以封装成一个权限类供其他地方调用,懒得写了,代码先散装着贴吧。
private static final int REQUEST_PERMISSION_CODE = 101010; //默认请求权限的requestCode为1//需要申请的权限数组private String[] requestPermissionArray = new String[]{Manifest.permission.READ_CONTACTS,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE};public void checkPermission(Context context, String[] permissions) {//存放permissions中当前未被授予的权限List<String> permissionList = new ArrayList<>();//遍历权限数组,检测所需权限是否已被授予,若该权限尚未授予,添加到permissionList中for (String permission : permissions) {if (ContextCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {Log.e(TAG, "checkSelfPermission:" + permission);if (!permissionList.contains(permission)) {permissionList.add(permission);Log.e(TAG, "permissionList add " + permission);}}}if (!permissionList.isEmpty()) {//有权限尚未授予,去授予权限ActivityCompat.requestPermissions((Activity) context,permissionList.toArray(new String[permissionList.size()]),REQUEST_PERMISSION_CODE);} else {//权限都被授予了Log.d(TAG, "权限都授予了");//doSomething();}}/*** 申请权限结果返回** 通常checkPermission()权限都能申请下来,返回结果不处理也没问题** @param requestCode 请求码* @param permissions 所有申请的权限集合* @param grantResults 权限申请的结果*/@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);Log.i(TAG, "onRequestPermissionsResult");switch (requestCode) {case REQUEST_PERMISSION_CODE:if (grantResults.length > 0) { //有权限申请//存储被用户拒绝的权限List<String> deniedPermissionList = new ArrayList<>();//有权限被拒绝,分类出被拒绝的权限for (int i = 0; i < grantResults.length; i++) {String permission = permissions[i];int grantResult = grantResults[i];if (grantResult != PackageManager.PERMISSION_GRANTED) {if (!deniedPermissionList.contains(permission)) {deniedPermissionList.add(permission);}}}if (deniedPermissionList.isEmpty()) {//没有被拒绝的权限Log.d(TAG, "权限都授予了");//doSomething();} else {//有被拒绝的权限Log.e(TAG, "有权限被拒绝了");//继续申请}}break;}}
相关文章:
Android:权限permission申请示例代码
Android应用项目每次最开始都要进行权限申请,贴一下权限申请的示例代码,方便后续Ctrl CV使用 1.AndroidManifest.xml 配置要申请的权限 <uses-permission android:name"android.permission.READ_CONTACTS" /> <uses-permission and…...
AI Agent Service Toolkit:一站式大模型智能体开发套件
项目简介 该工具包基于LangGraph、FastAPI和Streamlit构建,提供了构建和运行大模型Agent的最小原子能力,包含LangGraph代理、FastAPI服务、用于与服务交互的客户端以及一个使用客户端提供聊天界面的Streamlit应用。用户可以利用该工具包提供的模板快速搭建基于LangGraph框架…...
大数据SQL调优专题——Hive执行原理
引入 Apache Hive 是基于Hadoop的数据仓库工具,它可以使用SQL来读取、写入和管理存在分布式文件系统中的海量数据。在Hive中,HQL默认转换成MapReduce程序运行到Yarn集群中,大大降低了非Java开发者数据分析的门槛,并且Hive提供命令…...
Python程序打包 |《Python基础教程》第18章笔记
《Python基础教程》第1章笔记👉https://blog.csdn.net/holeer/article/details/143052930 第18章 程序打包 程序可以发布后,你可能想先将它打包。如果程序只包含一个.py文件,这可能不是问题。然而,如果用户不是程序员࿰…...
图论 之 迪斯科特拉算法求解最短路径
文章目录 题目743.网络延迟时间3341.到达最后一个房间的最少时间I 求解最短路径的问题,分为使用BFS和使用迪斯科特拉算法,这两种算法求解的范围是有区别的 BFS适合求解,边的权值都是1的图中的最短路径的问题 图论 之 BFS迪斯科特拉算法适合求…...
掌握Spring开发_常用注解详解
1. 前言 1.1 写作目的 本文旨在全面解析Spring框架中常用的注解,帮助开发者更好地理解和使用这些注解,提高开发效率和代码质量。Spring框架提供了丰富的注解,简化了依赖注入、AOP、事务管理、Web开发等多个方面的开发工作。通过本文的学习,读者可以掌握这些注解的使用方法…...
华为昇腾服务器(固件版本查询、驱动版本查询、CANN版本查询)
文章目录 1. **查看固件和驱动版本**2. **查看CANN版本**3. **其他辅助方法**注意事项 在华为昇腾服务器上查看固件、驱动和CANN版本的常用方法如下: 1. 查看固件和驱动版本 通过命令行工具 npu-smi 执行以下命令查看当前设备的固件(Firmware࿰…...
Kubernetes的Ingress和Service有什么区别?
在Kubernetes中,Ingress和Service是两个不同的概念,它们在功能、作用范围、应用场景等方面存在明显区别,具体如下: 功能 Ingress:主要用于管理集群外部到内部服务的HTTP和HTTPS流量路由。它可以根据域名、路径等规则…...
洛谷B3619(B3620)
B3619 10 进制转 x 进制 - 洛谷 B3620 x 进制转 10 进制 - 洛谷 代码区: #include<algorithm> #include<iostream> #include<vector> using namespace std;int main(){int n,x;cin >> n >> x;vector<char> arry;while(n){if(…...
vue组件,父子通信,路由,异步请求后台接口,跨域
1.组件注册 1.1局部注册 局部注册组件---1.导入import 组件对象名 from 组件网页路径 export default{ name:"名称", data(){return {}}, created(){}, …...
详解分布式ID实践
引言 分布式ID,所谓的分布式ID,就是针对整个系统而言,任何时刻获取一个ID,无论系统处于何种情况,该值不会与之前产生的值重复,之后获取分布式ID时,也不会再获取到与其相同的值,它是…...
.NET + Vue3 的前后端项目在IIS的发布
目录 一、发布准备 1、安装 IIS 2、安装 Windows Hosting Bundle(.NET Core 托管捆绑包) 3、安装 IIS URL Rewrite 二、项目发布 1、后端项目发布 2、前端项目发布 3、将项目部署到 IIS中 三、网站配置 1、IP配置 2、防火墙配置 3、跨域配置…...
软件测试之压力测试
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 压力测试 压力测试是一种软件测试,用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力&…...
矩阵-矩阵置零
矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为0 。请使用 原地 算法。在计算机科学中,一个原地算法(in-place algorithm)是一种使用小的,固定数量的额外之空间来转…...
【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter19-表单脚本
十九、表单脚本 表单脚本 JavaScript 较早的一个用途是承担一部分服务器端表单处理的责任。虽然 Web 和 JavaScript 都已经发展了很多年,但 Web 表单的变化不是很大。由于不能直接使用表单解决问题,因此开发者不得不使用JavaScript 既做表单验证…...
【C# 数据结构】队列 FIFO
目录 队列的概念FIFO (First-In, First-Out)Queue<T> 的工作原理:示例:解释: 小结: 环形队列1. **FIFO?**2. **环形缓冲队列如何实现FIFO?**关键概念: 3. **环形缓冲队列的工作过程**假设…...
论文笔记-WWWCompanion2024-LLM as Data Augmenters for Cold-Start Item Recommendation
论文笔记-WWW Companion 2024-Large Language Models as Data Augmenters for Cold-Start Item Recommendation 大语言模型作为冷启动项目推荐的数据增强器摘要1.引言2.前言3.LLMs作为数据增强3.1增强数据生成3.2成对比较损失 4.实验4.1实验设置4.2结果和分析4.3超参数实验 5.总…...
Java 语法新特性(Records、Pattern Matching、Sealed Classes)深度解析(11/17/21)✨
一、Records(Java 16) 📝 核心价值:简化不可变数据载体的定义 // 传统POJO vs Record public record User(String name, int age) {} // 自动生成:构造方法/equals()/hashCode()/toString() User user new User(&qu…...
QUdpSocket的readyRead信号只触发一次
问题 QUdpSocket的readyRead信号只触发一次。 原因 on_readyRead槽函数里必须读出现有数据后,才能触发新的事件。 解决办法 在on_readyRead槽函数里取出数据。 void MainWindow::on_readyRead() {qDebug() << "on_readyRead in";while (m_udp…...
jsherp importItemExcel接口存在SQL注入
一、漏洞简介 很多人说管伊佳ERP(原名:华夏ERP,英文名:jshERP)是目前人气领先的国产ERP系统虽然目前只有进销存财务生产的功能,但后面将会推出ERP的全部功能,有兴趣请帮点一下 二、漏洞影响 …...
AI 英语教学智能体开发
AI 英语教学智能体开发已进入“认知模拟”与“超低延迟交互”的深水区。技术栈的构建不再仅仅是调用 API,而是涉及从底层推理到上层教学法编排的整套国产化生态。以下是国内开发 AI 英语教学智能体的核心技术维度:1. 基座模型与国产化适配国内开发者目前…...
3步搞定!AeroSpace配置Kitty终端快捷键,效率飙升
3步搞定!AeroSpace配置Kitty终端快捷键,效率飙升 【免费下载链接】AeroSpace AeroSpace is an i3-like tiling window manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ae/AeroSpace AeroSpace是一款类i3的macOS窗口管理器&…...
Neon MCP Server 服务说明文档
1. 服务概述一句话简介:通过自然语言命令管理Neon数据库的MCP服务器服务名称:Neon MCP Server版本号:最新版本开发者/提供方:NeonDatabase Labs协议类型:MCP (Model Context Protocol)2. 核心功能列出该MCP服务提供的主…...
微信自动化终极指南:用wxauto三小时解放双手,工作效率提升300%
微信自动化终极指南:用wxauto三小时解放双手,工作效率提升300% 【免费下载链接】wxauto Windows版本微信客户端(非网页版)自动化,可实现简单的发送、接收微信消息,简单微信机器人 项目地址: https://gitc…...
别再死磕DDPM了!用Score-Based Generative Modeling (SGM) 换个思路玩转扩散模型
从DDPM到SGM:探索生成模型的双轨范式革命 当开发者们还在为DDPM的噪声预测网络调参时,前沿研究已经开辟了另一条基于分数匹配的生成路径。本文将带您穿透数学表象,理解Score-Based Generative Modeling(SGM)如何通过概…...
别再乱用set_multicycle_path了!手把手教你搞定异步复位同步释放的STA约束(附SDC代码)
异步复位同步释放电路的STA约束实战:避开set_multicycle_path的常见陷阱 在数字芯片设计中,异步复位同步释放(Asynchronous Reset Synchronous Release)电路几乎出现在每一个需要可靠复位控制的模块中。这种结构既能保证复位信号的…...
企业级无线网络规划入门:如何用H3C AC为不同部门(业务/办公)配置隔离的Wi-Fi?
企业级无线网络规划实战:基于H3C AC的多部门Wi-Fi隔离方案 当走进一家现代化企业,你是否注意过不同区域的Wi-Fi名称可能各不相同?前台接待区显示"Guest-WiFi",会议室挂着"Meeting",而办公区则是&q…...
别再只盯着A计权了!用Python+Librosa手把手教你实现A/B/C三种声压级计权(附完整代码)
突破A计权局限:Python实战A/B/C三种声学计权算法全解析 当我们谈论声音测量时,A计权几乎成了行业默认标准。但你是否思考过,为什么在特定场景下工程师们会转向B或C计权?这篇文章将带你深入声学计权的数学本质,并用Pyth…...
思源宋体TTF:为什么这款免费字体能彻底改变你的中文排版体验
思源宋体TTF:为什么这款免费字体能彻底改变你的中文排版体验 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还记得那些年为中文字体版权发愁的日子吗?当我第一…...
SCI投稿别再卡在Data Availability Statement!手把手教你套用5种期刊模板(含避坑点)
SCI投稿Data Availability Statement终极指南:5种场景模板与高阶避坑策略 凌晨三点的实验室,屏幕荧光映着李博士疲惫的脸——距离投稿截止只剩6小时,却被期刊系统里那个红色星号的"Data Availability Statement"字段卡住了。这不是…...
