Android手机中,有些permission并不是在应用程序的mainfest文件中声明就可以获得,它们还和是否是第三方签名及签名的类型有关系。
典型的
android.permission.INSTALL_PACKAGES
除了需要在
mainfest文件中声明,还需要应用程序是系统的Platform签名。
今天特意写一测试程序来测试哪些
permission是
第三方签名的应用程序获得的。当然有些Android手机,如果把apk应用程序放到
/system/app
的目录下,即使是使用的第三方签名,也能获得相当于
系统的Platform签名的权限。但是这个毕竟是非常规方法,故在这里不在我讨论的范围内。另外由于我的操作失误,可能应为某个
permission
没加入到
mainfest
文件,造成无法通过权限检查。因此测试结果
仅供参考
。
测试结果显示,在
Lenovo A820(
Android 4.1.2
)中应用程序使用第三方签名无法获得以下的
permission:
android
.
permission
.
ACCESS_CACHE_FILESYSTEM
android
.
permission
.
ACCESS_CHECKIN_PROPERTIES
android
.
permission
.
ACCESS_CONTENT_PROVIDERS_EXTERNALLY
android
.
permission
.
ACCESS_MTK_MMHW
android
.
permission
.
ACCESS_MTP
android
.
permission
.
ACCESS_SURFACE_FLINGER
android
.
permission
.
ACCESS_WIMAX_STATE
android
.
permission
.
ACCOUNT_MANAGER
com
.
android
.
voicemail
.
permission
.
ADD_VOICEMAIL
android
.
permission
.
ALLOW_ANY_CODEC_FOR_PLAYBACK
android
.
permission
.
ASEC_ACCESS
android
.
permission
.
ASEC_CREATE
android
.
permission
.
ASEC_DESTROY
android
.
permission
.
ASEC_MOUNT_UNMOUNT
android
.
permission
.
ASEC_RENAME
android
.
permission
.
BACKUP
android
.
permission
.
BIND_ACCESSIBILITY_SERVICE
android
.
permission
.
BIND_APPWIDGET
android
.
permission
.
BIND_DEVICE_ADMIN
android
.
permission
.
BIND_INPUT_METHOD
android
.
permission
.
BIND_PACKAGE_VERIFIER
android
.
permission
.
BIND_REMOTEVIEWS
android
.
permission
.
BIND_TEXT_SERVICE
android
.
permission
.
BIND_VPN_SERVICE
android
.
permission
.
BIND_WALLPAPER
android
.
permission
.
BRICK
android
.
permission
.
BROADCAST_PACKAGE_REMOVED
android
.
permission
.
BROADCAST_SMS
android
.
permission
.
BROADCAST_WAP_PUSH
android
.
intent
.
category
.
MASTER_CLEAR
.
permission
.
C2D_MESSAGE
android
.
permission
.
CALL_PRIVILEGED
android
.
permission
.
CHANGE_BACKGROUND_DATA_SETTING
android
.
permission
.
CHANGE_COMPONENT_ENABLED_STATE
android
.
permission
.
CHANGE_WIMAX_STATE
android
.
permission
.
CLEAR_APP_USER_DATA
android
.
permission
.
CONFIRM_FULL_BACKUP
android
.
permission
.
CONNECTIVITY_INTERNAL
android
.
permission
.
CONTROL_LOCATION_UPDATES
android
.
permission
.
COPY_PROTECTED_DATA
android
.
permission
.
CRYPT_KEEPER
android
.
permission
.
DELETE_CACHE_FILES
android
.
permission
.
DELETE_PACKAGES
android
.
permission
.
DEVICE_POWER
android
.
permission
.
DIAGNOSTIC
android
.
permission
.
DUMP
android
.
permission
.
FACTORY_TEST
android
.
permission
.
FORCE_BACK
android
.
permission
.
FORCE_STOP_PACKAGES
android
.
permission
.
GET_DETAILED_TASKS
android
.
permission
.
GLOBAL_SEARCH
android
.
permission
.
GLOBAL_SEARCH_CONTROL
android
.
permission
.
GRANT_REVOKE_PERMISSIONS
android
.
permission
.
HARDWARE_TEST
android
.
permission
.
INJECT_EVENTS
android
.
permission
.
INSTALL_LOCATION_PROVIDER
android
.
permission
.
INSTALL_PACKAGES
android
.
permission
.
INTERNAL_SYSTEM_WINDOW
android
.
permission
.
MANAGE_APP_TOKENS
android
.
permission
.
MANAGE_NETWORK_POLICY
android
.
permission
.
MANAGE_USB
android
.
permission
.
MASTER_CLEAR
android
.
permission
.
MODIFY_APPWIDGET_BIND_PERMISSIONS
android
.
permission
.
MODIFY_NETWORK_ACCOUNTING
android
.
permission
.
MODIFY_PHONE_STATE
android
.
permission
.
MOVE_PACKAGE
android
.
permission
.
NET_ADMIN
android
.
permission
.
NFC
android
.
permission
.
PACKAGE_USAGE_STATS
android
.
permission
.
PACKAGE_VERIFICATION_AGENT
android
.
permission
.
PERFORM_CDMA_PROVISIONING
android
.
permission
.
READ_CELL_BROADCASTS
android
.
permission
.
READ_FRAME_BUFFER
android
.
permission
.
READ_INPUT_STATE
android
.
permission
.
READ_LOGS
android
.
permission
.
READ_NETWORK_USAGE_HISTORY
android
.
permission
.
READ_PRIVILEGED_PHONE_STATE
android
.
permission
.
READ_PROFILE
android
.
permission
.
READ_SOCIAL_STREAM
android
.
permission
.
READ_USER_DICTIONARY
android
.
permission
.
REBOOT
android
.
permission
.
RECEIVE_EMERGENCY_BROADCAST
android
.
permission
.
REMOTE_AUDIO_PLAYBACK
android
.
permission
.
REMOVE_TASKS
android
.
permission
.
RETRIEVE_WINDOW_CONTENT
android
.
permission
.
SEND_SMS_NO_CONFIRMATION
android
.
permission
.
SERIAL_PORT
android
.
permission
.
SET_ACTIVITY_WATCHER
com
.
android
.
alarm
.
permission
.
SET_ALARM
android
.
permission
.
SET_ALWAYS_FINISH
android
.
permission
.
SET_ANIMATION_SCALE
android
.
permission
.
SET_DEBUG_APP
android
.
permission
.
SET_KEYBOARD_LAYOUT
android
.
permission
.
SET_ORIENTATION
android
.
permission
.
SET_POINTER_SPEED
android
.
permission
.
SET_PREFERRED_APPLICATIONS
android
.
permission
.
SET_PROCESS_LIMIT
android
.
permission
.
SET_SCREEN_COMPATIBILITY
android
.
permission
.
SET_TIME
android
.
permission
.
SET_WALLPAPER_COMPONENT
android
.
permission
.
SHUTDOWN
android
.
permission
.
SIGNAL_PERSISTENT_PROCESSES
android
.
permission
.
START_ANY_ACTIVITY
android
.
permission
.
STATUS_BAR
android
.
permission
.
STATUS_BAR_SERVICE
android
.
permission
.
STOP_APP_SWITCHES
android
.
permission
.
UPDATE_DEVICE_STATS
android
.
permission
.
UPDATE_LOCK
android
.
permission
.
USE_SIP
android
.
permission
.
WRITE_APN_SETTINGS
android
.
permission
.
WRITE_GSERVICES
android
.
permission
.
WRITE_MEDIA_STORAGE
android
.
permission
.
WRITE_PROFILE
android
.
permission
.
WRITE_SECURE_SETTINGS
android
.
permission
.
WRITE_SOCIAL_STREAM
android
.
permission
.
WRITE_USER_DICTIONARY
AndroidManifest.xml中的<uses-feature>以及和<uses-permission>之间的联系
概述:<uses-feature>用来声明应用中需要用的硬件和软件的功能。
硬件特性:表明您的应用需要用的硬件功能。
功能类型 | 特征描述 | 描述 |
音频 | android.hardware.audio.low_latency | 该应用程序使用低延迟的音频设备上的管道,声音输入或输出延迟或滞后敏感。 |
蓝牙 | android.hardware.bluetooth | 该应用程序使用蓝牙无线功能,在设备中。 |
相机 | android.hardware.camera | 该应用程序使用该设备的摄像头。 如果设备支持多个摄像头,应用程序使用相机,面对从屏幕上移开。 |
android.hardware.camera.autofocus | 子功能。 该应用程序使用设备相机的自动对焦能力。 | |
android.hardware.camera.flash | 子功能。 该应用程序使用设备相机的闪光灯。 | |
android.hardware.camera.front | 子功能。 该应用程序使用设备上的前置摄像头。 | |
android.hardware.camera.any | 该应用程序使用至少一个摄像头朝向任何方向。 使用当前在偏好 android.hardware.camera的, 如果不需要的背面朝相机。 | |
位置 | android.hardware.location | 该应用程序使用设备上的一个或多个特征,确定位置,如GPS定位,网络位置或细胞的位置。 |
android.hardware.location.network | 子功能。 该应用程序使用从设备支持的基于网络的地理定位系统获得的粗略的位置坐标 | |
android.hardware.location.gps | 子功能。 该应用程序使用设备上的全球定位系统接收器获得的精确位置坐标。 | |
麦克风 | android.hardware.microphone | 该应用程序使用设备上的麦克风。 |
NFC | android.hardware.nfc | 该应用程序使用近场通讯在设备的收音功能。 |
传感器 | android.hardware.sensor.accelerometer | 该应用程序使用的移动设备上的一个加速度计的运动读数。 |
android.hardware.sensor.barometer | 该应用程序使用该设备的晴雨表。 | |
android.hardware.sensor.compass | 该应用程序使用设备上的磁力计(罗盘)方向读数。 | |
android.hardware.sensor.gyroscope | 该应用程序使用该设备的陀螺仪传感器。 | |
android.hardware.sensor.light | 该应用程序使用该设备的光传感器。 | |
android.hardware.sensor.proximity | 该应用程序使用该设备的接近传感器。 | |
屏幕 | android.hardware.screen.landscape | 该应用程序需要横向。 |
android.hardware.screen.portrait | 该应用程序需要纵向。 | |
电话 | android.hardware.telephony | 该应用程序使用电话功能的移动设备,例如,电话与数据通信业务的无线电。 |
android.hardware.telephony.cdma | 子功能。 该应用程序使用CDMA电话收音机功能在设备上的。 | |
android.hardware.telephony.gsm | 子功能。 应用程序在设备上采用了GSM电话收音机功能。 | |
电视 | android.hardware.type.television | 应用程序是专为电视用户体验。 |
触摸屏 | android.hardware.faketouch | 该应用程序使用基本的的触摸互动活动,如“点击”,“点击”,并拖动。 |
android.hardware.faketouch.multitouch.distinct | 不同的应用程序执行跟踪的两个或两个以上的“手指”上假的触摸界面。 这是的faketouch功能的一个超集。 | |
android.hardware.faketouch.multitouch.jazzhand | 不同的应用程序执行的跟踪5个或以上的“手指”上假的触摸界面。 这是的faketouch功能的一个超集。 | |
android.hardware.touchscreen | 该应用程序使用的触摸屏功能,比基本触摸事件,如一扔,更具互动性的手势。 这是的基本faketouch功能的一个超集。 | |
android.hardware.touchscreen.multitouch | 应用程序使用在设备屏幕上的两个基本点的多点触控功能,如捏的手势,但,不需要独立跟踪触及。 这是触摸屏功能的一个超集。 | |
android.hardware.touchscreen.multitouch.distinct | 子功能。 在设备屏幕上的应用程序采用了先进的多点多点触控功能,如跟踪两个或两个以上的点完全独立。 这是一个多点触控功能的超集。 | |
android.hardware.touchscreen.multitouch.jazzhand | 在设备屏幕上的应用程序采用了先进的多点多点触控功能,跟踪到五点完全独立。 这是一个独特的多点触控功能的超集。 | |
USB | android.hardware.usb.host | 该应用程序使用USB主机模式功能(表现为主机和USB设备连接到)。 |
android.hardware.usb.accessory | 该应用程序使用的USB附件功能(表现为USB设备连接到USB主机)。 | |
无线上网 | android.hardware.wifi | 应用程序使用802.11网络(WIFI)功能的设备上的。 |
软件功能:表明您的应用程序使用或需要的软件功能。
特点 | 属性值 | 描述 |
应用程序! | android.software.app_widgets | 该应用程序使用或提供应用小工具,仅应安装的设备上,包括一个主屏幕或类似的位置,用户可以应用小工具嵌入。 |
蓝牙低功耗 | android.software.bluetooth_le | 该应用程序使用蓝牙低能量的API只能够与其他设备通过蓝牙低功耗通信设备,应安装。 这也隐含声明的 |
主屏幕 | android.software.home_screen | 主屏幕更换应用程序的行为,应只安装在设备主屏幕上的应用程序支持第三方。 |
输入法 | android.software.input_methods | 该应用程序提供了一个自定义的输入法应该只能安装在设备支持第三方输入法。 |
动态壁纸 | android.software.live_wallpaper | 该应用程序使用或提供动态壁纸,应该只能安装在设备支持动态壁纸。 |
SIP / VOIP | android.software.sip | 该应用程序使用SIP服务在设备上,只应安装上支持SIP的设备。 |
android.software.sip.voip | 子功能。 该应用程序使用基于SIP的VoIP服务在设备上。 此子功能隐式声明 | |
权限和功能之间的联系:
类别 | 需要的权限 | 要求的功能 |
蓝牙 | BLUETOOTH | android.hardware.bluetooth (见 特殊处理的蓝牙功能 的详细信息。) |
BLUETOOTH_ADMIN | android.hardware.bluetooth | |
相机 | CAMERA | android.hardware.camera 和 android.hardware.camera.autofocus |
位置 | 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.network 和 android.hardware.location | |
ACCESS_FINE_LOCATION | android.hardware.location.gps 和 android.hardware.location | |
麦克风 | RECORD_AUDIO | android.hardware.microphone |
电话 | 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 | |
无线上网 | ACCESS_WIFI_STATE | android.hardware.wifi |
CHANGE_WIFI_STATE | android.hardware.wifi |
CHANGE_WIFI_MULTICAST_STATE | android.hardware.wifi |