編輯:關於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>
延伸閱讀
http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions
以上就是對Android 程序申請權限的資料整理,後續繼續補充相關資料,謝謝大家對本站的支持!
微信名字怎麼改 微信名字怎麼加表情
微信名字用了一段時間就想換一個,換個新鮮,微信名字怎麼改?微信名字如何加表情?下面我們就一起來瞧一瞧吧!微信名字怎麼改1.首先在手機上面登錄到自己的微信賬號
Android中微信搶紅包插件原理解析及開發思路
一、前言自從去年中微信添加搶紅包的功能,微信的電商之旅算是正式開始正式火爆起來。但是作為Android開發者來說,我們在搶紅包的同時意識到了很多問題,就是手動去搶紅包的速
Chromium擴展(Extension)通信機制分析
Chromium的Extension由Page和Content Script組成。如果將Extension看作是一個App,那麼Page和Content Script就是
Codeforces div.2 B. The Child and Set
題目如下: B. The Child and Set time limit per test 1 second memory limit per test 256