Android开发不申请权限来使用对应功能

解决Android 存储权限申请不弹出窗口的问题 摘要:针对Android 11+版本中WRITE_EXTERNAL_STORAGE权限失效的问题,本文提出分级处理方案:1) Android 11+使用MANAGE_EXTERNAL_STORAGE权限并引导用户至设置页面;2) Android 6.0-10沿用传统权限请求机制。核心解决方案包括创建StoragePermissionHelper工具类实现版本适配,优先推荐应用专属存储目录(无需权限),同时提供MediaStore API作为替代方案。对于需要同时处理相机、录音等多权限的场景,增强版Enhan 阅读详情

Android开发不申请权限来使用对应功能

从用户角度来说很难获取到正确的android权限。通常你只需要做一些很基础的事(例如编辑一个联系人)但实际你申请的权限却远远比这更强大(例如可以获取到所有的联系人明细等)。

这样能很容易的理解到用户会怀疑到你的应用。如果你的应用不是开源的,那他们就没有方法来验证你会不会下载所有的联系人数据并上传到服务器。及时你去解释为什么需要这个权限,但是人们不会相信你。原来我会选择不去使用这些敏感的权限来防止用户产生不信任。(当然很多应用他们申请权限只是为了后台获取你的联系人数据上传- -!以及之前被爆的某宝使用摄像头拍照的问题)

这就是说,有一件事在困扰着我,如何能在做一些操作时不去申请权限。

打个比方说:android.permission.CALL_PHONE这个权限。你需要它来在应用中拨打电话,是吗?这就是你怎么去实现拨号的吗?

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:1234567890"))
startActivity(intent);

错!,你通过这段代码需要该权限的原因是因为你可以在任何时间在不需要用户操作的情况下打电话。也就是说如果我的应用申请了这个权限,我可以在你不知情的情况下每天凌晨三点去拨打骚扰电话。

正确的方式是使用ACTION_VIEW或者ACTION_DIAL:

Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:1234567890"))
startActivity(intent);

这个问题的完美解决方案就是不需要申请权限了。原因就是你不是直接拨号,而是用指定的号码调起拨号器,仍然需要用户点击”拨号”来开始打电话。老实的说,这样让人感觉更好。

简单的说就是如果我想要的操作不是让用户在应用内点击某个按钮就直接开始拨打电话,而是让用户点击在应用内点击某个按钮是我们去调起拨号程序,并且显示指定号码,让用户在拨号器中点击拨号后再开始拨打电话。这样的话我们就完全不用申请拨号权限了。

另一个例子: 我想获取某一个联系人的号码,你可能会想这需要申请获取所有联系人的权限。这是错的!。

Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(StructuredPostal.CONTENT_TYPE);
startActivityForResult(intent, 1);

我们可以使用上面的代码,来启动联系人管理器,让用户来选择某一个联系人。这样不仅是不需要申请任何权限,也不需要提供任何联系人相关的UI。这样也能完全保证你选择联系人时的体验。

Android系统最酷的部分之一就是Intent系统,这意味着我不需要自己来实现所有的东西。应用可以注册处理它所擅长的指定数据,像电话号码、短信或者联系人。如果这些都要自己在一个应用中去实现,那这将会是很大的工作量,也会让应用变得臃肿。

Android系统的另一个优势就是你可以使用其他应用申请的权限,而不用自己申请。这样才保证了上面的情况。拨号器需要申请拨打电话的权限,我只需要一个能调起拨号器的Intent就好了。用户信任拨号器拨打电话,而不是我们的应用。他们无论如何都宁愿使用系统的拨号器。

写这篇文章的意义是在你想要申请一个权限的时候,你需要至少看看Intent的官方文档看能否请求另外一个应用来帮我们做这些操作。如果想要深入的研究,可以学习下关于权限的详细介绍,这里面包含了很多精细的权限。

使用更少的权限可以不但可以让用户更加信任你,而且可以让用户有一个更好的体验,因为他们仍然在使用他们所期望的应用。

  1. 遗憾的是,不是一个真实的号码。
  2. 不幸的是,Intent系统的属性也建立了可能会被滥用的漏洞,但你也不会写一个滥用的应用,是吗?


更多内容请见Github

安卓7.0 申请相机及读写权限 这个部分是上学期做项目时遇到的一个问题,项目中需要用相机拍摄图片,当时在网上找的调用系统相机的方法都没有主动申请权限,而在安卓6.0以后版本这是十分必要的部分,不申请权限程序会崩溃。后来看了郭霖大佬的书,完美的解决了这个问题,所以还是很推荐这本安卓入门的书。 另外本人是刚学习安卓的小白,本片博客其实算是一个笔记,希望写的有不对的地方大佬们可以指出来。 本部分来源于《第一行代码》。 1、在Andro... 阅读详情

相关推荐

Android动态权限申请

Android动态申请权限动态申请权限请求相机和SD卡写入权限的例子 动态申请权限 Android的权限机制并不是什么新鲜事物,从系统的第一个版本开始就已经存在了。但其实之前Android的权限机制在保护用户安全和隐私等方面起到的作用比较有限,尤其是一些大家都离不开的常用软件,非常容易“店大欺客”。为此,Android开发团队在Android 6.0系统中引用了运行时权限这个功能,从而更好地保护了用户的安全和隐私。 请求相机和SD卡写入权限的例子 最新在研究camera2时,在首次打开相机时需要动态请求权限

浅梦墨汐的博客 4439

1.5.25 Android Itent 关于 ACTION_PICK&ACTION_GET_CONTENT

你是不是很多时候,想从弹出的电话本姓名列表中中查找到某个人,然后再获取该人的详细信息呢? 你是不是想选择从弹出的列表中选择一张图片,然后将其进行进一步的操作呢? 如果,你想,那你是不是很像知道,我们应该怎么让其弹出来一张选择列表,又应该怎么代码实现后边的操作呢? Itent.ACTION_PICK  Intent.ACTION_GET_CONTENT 两者都可以完成类似的功能,让我们一起来看...

u012913404的专栏 815

Unity 在Unity端申请Android权限

前段时间还在职的时候,遇到这么一个问题:SDK首次调起相机接口进行拍照的时候,会调起2次相机。并在第2次拍照后闪退。分析了一下,都是发生在首次获取权限时才会发生,拿到权限就不会了。并且2台会发生这种情况的Android版本都是13。猜测是SDK获取权限接口没有适配好android13,于是尝试先把TargetAPI降到Android 10. 如下图,不过还是会闪退。然后想了另外的办法,既然SDK是在申请权限的时候闪退,那我这边先自己申请好权限后,再调SDK的接口,SDK因为已经有权限就不用申请。

super41的博客 6455

android中关于联系人的权限问题

项目中有一个选择系统联系人的需求。 刚开始没有做动态的权限申请,是可以进入系统联系人列表的,并且显示联系人的信息(姓名、电话等),但是点击选择之后就会报错,java.lang.SecurityException: Permission Denial: reading com.android.providers.contacts.ContactsProvider2 uri co...

莫闲的专栏 2491

权限相关知识:安卓开发中创建文件的完整获取权限步骤(安卓13以上和安卓13以下)

权限的版本作用范围获取权限是否被允许,特殊权限与普通权限判断是否已授权的方法不一致。

weixin_51887244的博客 1584

Android选择联系人:实现选择联系人功能的编程指南

它允许用户从设备的联系人列表中选择一个或多个联系人,并在应用中使用所选联系人的信息。用户选择联系人后,选择结果将传递回MainActivity的onActivityResult方法中,您可以在该方法中处理所选联系人的数据。通过添加相应的权限声明、UI元素和事件处理逻辑,您可以轻松地在应用中实现选择联系人的功能。在上述代码中,我们为按钮添加了一个点击事件监听器,并在点击时启动一个选择联系人的Intent。然后,在与该布局文件对应的Activity中,我们将为选择联系人按钮添加点击事件处理逻辑。

2301_79326559的博客 415

android 出海APP,不获取权限就能获取通讯录联系人 APP列表、定位数据、上传图片

还有一类场景就是,我们有时候需要上传支付凭证图片,没有读写权限如何能获取到照片呢,经过我不断得查阅资料和尝试, 发现了一种可以绕过权限获取到图片得方式,线上验证确实可行具体方式需要得话可以联系我。一般我们出海金融APP都需OCR拍照之类得功能,拍完照片要存储怎么办, 其实就算没有文件存储权限, 我们可以使用内部存储方式,这种方式是不需要主动申请权限得。移动端出海上架谷歌市场都知道, 现在金融类得APP是不让拿通讯录权限、文件权限、位置精确权限、无法获取APP所有安装应用列表、获取手机图片并上传。

xiaoerbuyu1233的博客 1218

Unity 权限 之 Android 【权限 动态申请】功能的简单封装

Unity 是一个功能强大的跨平台游戏引擎,广泛用于开发视频游戏和其他实时3D互动内容,如模拟器和虚拟现实应用。游戏引擎Unity:Unity Technologies 开发的跨平台游戏引擎,支持2D和3D图形、物理引擎、音频、视频、网络和多平台发布。跨平台支持:Unity 支持在多个平台上发布,包括 Windows、macOS、Linux、iOS、Android、WebGL、PlayStation、Xbox、Switch 等。开发环境:用于创建和管理 Unity 项目的集成开发环境(IDE)。

仙魁XAN 1874

android 获取单个通讯录联系人信息(无权限跳转权限设置页面)

首先说一下,在魅族手机上需要用户手动开启权限,不然获取到的cursor.moveToFirst()会返回false,反过来,如果cursor.moveToFirst()返回false,一般都是权限问题,那么如何解决这个问题呢?一般解决方案是弹窗提示,需要开启联系人权限,点击确定就跳转到设置权限的页面。 点击跳转到通讯录页面 Intent intent = new Intent(Intent....

北京流年 3616

安卓开发的时候,在vivo上如何不通过动态申请权限去获取应用的安装列表?

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 976

.NET适配HarmonyOS进展 1. 前言

目前国产化系统浪潮下,适配鸿蒙是中国软件大势所趋,.NET作为最适合开发客户端语言之一,适配鸿蒙系统(HarmonyOS Next)是目前.NET开发者最关心的事情。我目前业余时间正在移植Avalonia到HarmonyOS,去年在.NET Conf CN上分享过,目前又取得一点进展,所以本文把所有问题进行整合与大家进行分享。

2301_76476890的博客 1461

Android权限管理及动态申请权限

Android权限管理 一、基本介绍   Android安全架构规定:默认情况下,任何应用都没有权限执行对其他应用、操作系统或用户有不利影响的任何操作。这包括读写用户的私有数据(如联系人或电子邮件等)、读写其他应用的文件、执行网络访问、使设备保持唤醒状态等等。   应用权限基于系统安全功能,并有助于 Android 支持与用户隐私相关的以下目标: 控制:用户可以控制他们与应用分享的数据。 透明度:用户可以了解应用使用了哪些数据以及应用为何访问相关数据。 数据最小化:应用仅能访问和使用用户调用的特定任务.

weixin_56291477的博客 3万+

CentOS 7 安装 Python 3.10

我这里已经软链接了,正常未链接之前是python->python2.7而不是python3.10。python2.7默认安装是在 /usr/bin目录中,切换到/usr/bin/更改yum配置,因为其要用到python2才能执行,否则会导致yum不能正常使用。2. 安装 Python 3.10 必需的 openssl >= 1.1.1。默认的centos7是没有安装pip,先添加epel扩展源。/usr/bin/python 修改为如下。添加软链接,将原来的链接备份。添加python3的软链接。

bensonyang888的博客 2906

Android 开发中的权限申请

我们都知道,从 Android 6.0 开始,部分危险权限在 xml 注册的同时,还需要动态申请。

小旭的专栏 1万+

不懂就学之挑战成为WorldQuant Brain顾问的第1天

WorldQuant Brain 是由 WorldQuant 公司开发的一个基于人工智能和机器学习的量化研究平台,旨在帮助量化研究员发现和构建有效的投资策略。WorldQuant 是一家全球领先的量化投资公司,专注于利用数据科学、技术和金融工程开发量化交易策略。

Yanbang1的博客 8391

小样本学习概述

目录 前言 小样本学习存在的意义? 什么是小样本学习? 小样本学习的方法有哪些? 结语 前言 小样本学习(Few-Shot Learning)是近几年兴起的一个研究领域,小样本学习旨在解决在数据有限的机器学习任务。 小样本学习存在的意义? 近些年,以深度卷积神经网络为代表的深度学习方法在各类机器学习任务上取得了优异的成绩——很多任务上已经超越了人类表现。狂欢背后,危机四伏。因为这些深度学习方法work的关键之一是海量标注数据的支持。 但是在工业界,很多时候难以获得海量的训练数据,更.

DwD-的博客 3万+

安卓10 Android Q 权限申请遇到的坑——更严格的动态权限申请和存储权限

安卓10 File类新建文件操作失败的解决方案问题描述具体创建文件方法如下 问题描述 本人刚入安卓app开发的大门,安卓10的File类就把我拒之门外。 我使用了File.makedir()和file.createnewfile()方法,首先申请了权限(这可以肯定),在我的安卓6.0上完美运行,创建了logger.log文件和所需文件夹。然而到了安卓10这里费了一番周折,总是无法建立,方法调用返回...

qq_34352612的博客 8051

UG NX与PLC-1500的在环虚拟测试

TIA、PLCSIM、NetToPLCsim、KEPServerEX以及UG NX的在环虚拟测试

lvtlvtlvtlvt的博客 4220

安卓权限申请框架PermissionsDispatcher使用

安卓动态权限申请库PermissionsDispatcher使用 动态权限申请库https://github.com/permissions-dispatcher/PermissionsDispatcher 安卓6.0之前的系统,应用权限会在应用被安装的时候以列表的形式列出,用户可以看到那些权限被申请了,也可以选择性的关闭权限,6.0之后系统在应用安装时,不采取这种方式来申请权限,对于一般的没...

u012237341的博客 4998

Linux内核4.14版本——drm框架分析(1)——drm简介

本文介绍了DRM架构的发展历史、驱动框架以及简单示例,旨在帮助读者了解DRM架构的形成、功能流程实现。

phmatthaus的专栏 2558

AI驱动的网络安全运维:智能化时代的安全保障

本项目旨在使用Python和AI技术构建一个智能化的网络安全运维系统,能够实时监测网络流量,检测潜在的安全威胁,并自动采取应对措施,从而提升网络安全管理的效率和准确性。具体内容包括:环境配置与依赖安装数据采集与预处理机器学习模型构建与训练实时威胁检测与响应实际应用案例通过本文的介绍,我们展示了如何使用Python和AI技术构建一个智能化的网络安全运维系统。

Echo_Wish 1291

Android动态权限申请框架

XmPermissions 项目介绍 Android动态权限申请框架 Github地址:https://github.com/lhm0603/XmPermissionsProject 使用说明 XmPermissions 支持 Android 5.0及更高版本,在 Android6.0之前的权限申请默认直接允许。 开始使用 引入 XmPermissions 使用 Android Studio 或者其他 Gradle 构建项目 dependencies { //其他依赖 implementation

h461415832的博客 1572

NEU-DET 冷轧钢缺陷检测:基于 YOLOv8 的目标检测与可视化 UI 实现

冷轧钢的生产过程中,由于设备故障、工艺问题或者人为因素,钢板表面可能会出现多种缺陷,如划痕、裂纹、孔洞等,这些缺陷会严重影响钢材的质量。它比之前的版本(如 YOLOv5、YOLOv4)在速度和精度上都有显著提升,并且对硬件要求较低,适合进行工业界面和嵌入式系统的应用。这些版本相较于更大型的模型(如 YOLOv8x)具有更快的推理速度和较低的资源占用,适合工业生产线中的实时应用。通过将训练好的模型部署到工业生产线摄像头中,我们可以实现实时的缺陷检测,极大地提升生产效率和产品质量。

YOLO 739

Android 申请权限,安卓11、安卓12文件权限,RxPermissions使用,android.permission.WRITE_SETTINGS

1.需要用户手动赋予的权限( Dangerous Permissions) 所属权限组 权限 日历 READ_CALENDAR 日历 WRITE_CALENDAR 相机 CAMERA 联系人 READ_CONTACTS 联系人 WRITE_CONTACTS 联系人 GET_ACCOUNTS 位置 ACCESS_FINE_.........

meixi_android的博客 5920

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android开发 权限的使用及申请

权限的使用及申请)权限的使用及申请 #简介 在安卓开发中,权限占据了很大一部分,打电话,发信息,定位,联系人等等都需要权限,今天就说说在6.0之后,权限发生的变化。 权限的使用及申请 在6.0之前,我们申请权限是这样: <!--定位--> <uses-permission android:name="android.permission.ACCESS_COARSE...

若释·飞语 970

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Android 动态权限申请

检查应用是否具有某个危险权限。如果应用具有此权限,方法将返回PackageManager.PERMISSION_GRANTED,并且应用可以继续操作。如果应用不具有此权限,方法将返回PackageManager.PERMISSION_DENIED,且应用必须明确向用户要求权限。如果应用之前请求过此权限但是用户拒绝了此权限,此方法返回true。如果用户在过去拒绝了权限请求,并且在权限请求系统对话框中选择了不再提示这样的选项,此方法将返回false。如果设备规范禁止应用具有此权限,此方法也会返回false。

薛文旺 1783

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: 通过Hardware Layer提高动画性能
下一篇: 屏幕适配之百分比方案详解
CharonChui
博客等级 码龄12年 66粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值