Google Play和基于功能的过滤(四)
软件功能参考
下表中列出了由当前大多数发布的发布的Android平台所支持的软件功能描述符。对于应用程序要使用或需要的单一功能,都要在应用程序的清单的<uses-feature>元素中使用android:name属性来进行声明。
功能 |
属性值 |
说明 |
注释 |
Live Wallpaper |
android.software.live_wallpaper |
应用程序使用或提供Live Wallpapers |
|
SIP/VOIP |
android.software.sip |
应用程序要使用设备上的SIP服务 |
|
android.software.sip.voip |
子功能。应用程序要使用设备上的基于SIP的VOIP服务。 |
声明这个子功能,暗示着声明了android.software.sip父功能,除非声明该功能时也声明了android:required=”false” |
暗示功能需求的权限
在上面列出的一些功能常量中,要在相应的API发布之后,才对应用有效。例如,在Android2.2(API Level 8)中添加了android.hardware.bluetooth功能常量,但是它所指向的蓝牙API是在Android2.0(API Level 5)中被添加的。正因为这样,某些应用能够在有能力通过<uses-feature>元素声明其所需的API功能之前,就能够使用这些API。
要防止无意间让某些功能对应用程序有效,Google Play会假定某些相关硬件的权限,来指定默认情况下所需要的底层硬件功能。例如,使用蓝牙功能的应用程序必须在<uses-permission>元素中申请BLUETOOTH权限,对于旧版应用程序,Google Play会假定权限的声明,意味着应用程序需要底层的android.hardware.bluetooth功能,并且会基于该功能来过滤应用程序。
下表中列出的暗示功能需求的权限,等同于那些在<uses-feature>元素中声明的功能需求。要注意的是那些包含android:required属性的<uses-feature>声明,它的优先级要始终高于下表中所暗示的功能需求。
对于下表中的任何权限,都能够用带有android:required=”false”属性的<uses-feature>元素来明确的禁止基于暗示功能的过滤。例如,要禁止基于CAMERA权限的任何过滤,可以在其清单文件中添加以下<uses-feature>元素的声明:
<uses-featureandroid:name="android.hardware.camera"android:required="false"/>
分类 |
权限 |
暗示的功能需求 |
Bluetooth |
BLUETOOTH |
android.hardware.bluetooth (See Special handling for Bluetooth feature for details.) |
BLUETOOTH_ADMIN |
android.hardware.bluetooth |
|
Camera |
CAMERA |
android.hardware.cameraand
|
Location |
ACCESS_MOCK_LOCATION |
android.hardware.location |
ACCESS_LOCATION_EXTRA_COMMANDS |
android.hardware.location |
|
INSTALL_LOCATION_PROVIDER |
android.hardware.location |
|
ACCESS_COARSE_LOCATION |
android.hardware.location.networkand
|
|
ACCESS_FINE_LOCATION |
android.hardware.location.gpsand
|
|
Microphone |
RECORD_AUDIO |
android.hardware.microphone |
Telephony |
CALL_PHONE |
android.hardware.telephony |
CALL_PRIVILEGED |
android.hardware.telephony |
|
MODIFY_PHONE_STATE |
android.hardware.telephony |
|
PROCESS_OUTGOING_CALLS |
android.hardware.telephony |
|
READ_SMS |
android.hardware.telephony |
|
RECEIVE_SMS |
android.hardware.telephony |
|
RECEIVE_MMS |
android.hardware.telephony |
|
RECEIVE_WAP_PUSH |
android.hardware.telephony |
|
SEND_SMS |
android.hardware.telephony |
|
WRITE_APN_SETTINGS |
android.hardware.telephony |
|
WRITE_SMS |
android.hardware.telephony |
|
Wifi |
ACCESS_WIFI_STATE |
android.hardware.wifi |
CHANGE_WIFI_STATE |
android.hardware.wifi |
|
CHANGE_WIFI_MULTICAST_STATE |
android.hardware.wifi |