首页 > 编程语言 >为Android程序申请权限注意

为Android程序申请权限注意

时间:2022-11-09 23:39:34浏览次数:57  
标签:程序 feature uses Android 权限 android


Android系统提供为程序提供了权限申请,即在manifest中使用uses-permission来申请即可.实现起来非常简单,但是有些问题会随之浮出水面. 常见的现象是,有时候新加一个权限,(在Google Play上)程序显示的支持的设备会减少.

为什么权限越多,支持设备越少

因为有些权限隐式地需要feature,即当你显示使用uses-permission,会默认地为程序加入uses-feature.
而Android以及Google Play判断是否可以安装和现实的依据是,设备包含的system features是否完全包含程序申请的全部features. 只有在全部满足了程序需要的feature的设备上才可以展示并安装.

如何查看程序使用了哪些features

使用aapt dump badging your_apk_file_path,具体可以参考​​获取程序需要的features​

如何查看设备具有的features

Android提供了该API,具体参考​​获取系统支持的features​

举个例子

我们在程序manifest加入一行申请摄像头的权限.



<uses-permission android:name="android.permission.CAMERA" />

然后查看程序加入的feature



14:29 $ aapt dump badging PermissionDemo.apk | grep uses-feature

我们就会发现,这两个权限是新加的



uses-feature:'android.hardware.camera'
uses-feature:'android.hardware.camera.autofocus'

解决问题:如何加权限,不减少支持设备

如果你增加的权限并且及引入的feature不是必须使用的,可以显示地将该feature设置为不需要.继续上面的例子.在manifest中加入



<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>

重新生成程序.再次查看需要的权限.



14:29 $ aapt dump badging PermissionDemo.apk | grep uses-feature
uses-feature-not-required:'android.hardware.camera.autofocus'
uses-feature-not-required:'android.hardware.camera'
uses-feature:'android.hardware.touchscreen'

就这样,可以做到增加权限,同时保证支持设备不减少.

Show Me The Code



<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.droidyue.demo.permission"
android:versionCode="1"
android:versionName="1.0" >

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
</application>
</manifest>

延伸阅读

推荐

  • Android 4高级编程
  • Android编程权威指南



标签:程序,feature,uses,Android,权限,android
From: https://blog.51cto.com/u_3987305/5838963

相关文章

  • Start an Android App by ADB
    Tobemoregeek,IbegantostartanAndroidAppbyusingadb.ThankstoGoogle.It’spossibleandpowerful.ThetoolweusetomakeitisADB(AndroidDebugTool)......
  • Android内存泄漏:谨慎使用getSystemService
    Android中有很多服务,比如PowerManager,AlarmManager,NotificationManager等,通常使用起来也很方便,就是使用Context.getSystemService方法来获得。一次在公司开发项目开发中,突......
  • 记一场 Android 技术答疑
    之前在Stuq的Android课程中有幸分享了一些关于优化的问题,后期又处理了一些来自网友的问题,这里简单以文字形式做个整理.网络IO应该在哪种形式的线程中执行首先网络IO一般耗......
  • 在 Android 中如何确定 App(Activity) 的启动者
    最近在帮忙定位一个问题,涉及到某个应用自动启动了,为了确定是谁调用的,使用如下的日志进行查看(注:为了简单考虑,下面的启动者为launcher)(pre_release|✔)%adblogcat|grep......
  • Android WebView 诊断与排查问题的方法和技巧
    WebView,是安卓中很重要的一个组件,我们的应用中集成WebView后,可能会遇到各种各样的问题,这里简单介绍一些AndroidWebView诊断与排查问题的方法,希望对于大家有这方面的问题的......
  • 高质量的子程序
    目录简介创建子程序的正当理由似乎过于简单而没必要写成子程序的操作在子程序层上设计内聚性简介什么是子程序?子程序是为实现一个特定的目的而编写的一个可被调用的方......
  • [Bug0049]SwitchHosts报错:没有写入 Hosts 文件的权限
    问题SwitchHosts报错:没有写入Hosts文件的权限解决方案1、打开如下目录C:\Windows\System32\drivers\etc2、右键hosts文件->点击安全->点击编辑->找到User......
  • 【python】程序员最浪漫的表白方式,将情书写在她的照片里
    前言大家早好、午好、晚好吖~这不光棍节快到了,表弟准备写一封情书给他的女神,想在光棍节之前脱单。为了提高成功率,于是跑来找我给他参谋参谋,本来我是不想理他的。不过......
  • 前端技术分享:小程序双线程架构
    如今我们每个人都是小程序的使用者,小到日常的健康码,大到各种政务事项办理。究其因,对于用户来讲小程序无需下载,用完即走而且其具备轻量、流畅的使用体验;对于开发者来讲便捷简......
  • 程序员修炼之道——从小工到大家
    在这几周看了程序员修炼之道的第二章——注重实效的途径。感触很多。在这章中开头就讲述了重复性带来的危害以及正交性,受限于我们自身学习的不够迅速而知识的发展又是如此......