为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>
延伸阅读
http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions
以上就是对Android 程序申请权限的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!
我正在尝试调用我的类来检查存储权限 但问题是,它不让我在一个类中实现它,我得到了以下错误- "类型权限的方法onRequest estPermissionsResult(int, String[], int[])必须覆盖或实现超类型方法" 类型权限的方法requestPermissions(字符串[],int)未定义 这是我的密码- }
买家如何退换货? 1、功能路径 个人中心-我的订单-已发货-申请维权 2、操作流程 1、进入个人中心,找到订单 2、点击详情,进入订单详情页 3、点击申请维权,填写信息 4、提交 流程如下图: 5、买家填写相关处理方式、退款原因、退款金额、备注等信息后提交。 6、商家处理售后申请,打开后台-订单-售后服务 售后服务的列表显示项为商品信息、商品清单、订单金额、收货信息、买家、交易状态、操作。可根据下
本文向大家介绍Android中不支持动态申请权限的原因,包括了Android中不支持动态申请权限的原因的使用技巧和注意事项,需要的朋友参考一下 作为Android开发者,为程序增加权限是在正常不过的事情了,做法必然是在mainifest中,写入类似这样<uses-permission android:name="android.permission.INTERNET" />的信息. 以静态申请的形
1、请扫描授权码后,在选择公众平台账号时,正确选择“小程序”类型的账号。 2、为保证所有功能的正常使用,在授权时,需确认要授权的权限,为保证授权后可正常使用各项功能,请将所有权限集均授权给纷享销客,不要修改。尤其是“开放平台权限"、"网页授权"和“用户管理权限”,若不授权,则可能导致无法无法获取用户信息、小程序与公众号无法打通跳转等。 3、一个微信小程序仅可授权给一个纷享应用(如营销通、订货通或服
本文向大家介绍android 6.0 写入SD卡的权限申请实例讲解,包括了android 6.0 写入SD卡的权限申请实例讲解的使用技巧和注意事项,需要的朋友参考一下 6.0的手机对于写入手机需要申请权限的 我做了如下处理 下面我贴出代码 其实就是判断是不是6.0的手机再进行申请权限的处理 利用申请权限的回调机制直接在权限申请下来之后调用写入处理 注释很清楚 你们看看代码就好了( ⊙ o ⊙ )!
HttpURLConnection使我的应用程序崩溃,因为即使我在清单文件中使用标记,也没有授予internet权限