這些api雖然數量衆多,但是功能相對簡單,都是根據標頭或者是applicationinfo或activity資訊去擷取一些資源,如圖示,文本等。
getxml:擷取xml
gettext:從資源中讀取文本
getresourcesforapplication(app):擷取資源對象
getresourcesforapplication(apppackagename):擷取資源對象
getresourcesforactivity:從activity中擷取資源對象
getdrawable:擷取drawable
getdefaultactivityicon:activity的預設icon
getapplicationlabel:擷取applicaiton的标簽
getapplicationicon:擷取圖示
getactivityicon:擷取圖示
android 2.3新增兩個api,都是跟logo相關。
getapplicationlogo
getactivitylogo
手表上新增了banner.
getapplicationbanner
getactivitybanner
android 5.0新增了userbadged ui,是以新增了三個方法:
getuserbadgedlabel
getuserbadgedicon
getuserbadgeddrawablefordensity
android中可以支援将應用或者元件禁掉或者解禁。
componentenablesetting是通過元件名來設定,applicationenablesetting是通過包名。
setcomponentenabledsetting
getcomponentenabledsetting
setapplicationenabledsetting
getapplicationenabledsetting
原型:
參數:
包名
新狀态:狀态請見下面的3種。
标志位:要麼是dont_kill_app,要麼是0.
狀态可以為:
component_enabled_state_enabled
component_enabled_state_disabled
component_enabled_state_default
例程:禁掉微信:
将包中的四大元件之一禁掉或解禁。
參數與上面的針對整個應用的一緻。
android 1.0時,隻能檢查兩個包名的簽名是否一緻。
到了android 2.0,也可以支援對兩個uid之間判斷簽名。
問題是,從包名擷取uid的api,要到android 7.0才有呢。。。
addpackagetopreferred api已經在android 2.1被除名,是以prefer相關的api,隻剩下下面三個:
getpreferredpackages
getpreferredactivities
clearpackagepreferredactivities
至此,android 1.0的packagemanager提供的46個api全部講完了。
android 2.0開始引入feature的概念。我們可以通過getsystemavailablefeatures方法擷取系統支援哪些feature. 或者是通過hassystemfeature(name)方法判斷是否支援一個feature.
不過,android 2.0的時候,feature是不分版本号的。支援版本号的或者是通過hassystemfeature方法要到android 7.0才會出品。
屬性:
flags: flag_required或0
name:屬性名
reqglesversion:在name為空時,為需要的opengl es的版本号
version:(android 7.0才有)版本号
方法:
getglesversion(): 0x00010002代表1.2
例程:
輸出結果:
上面都是feature,最後一條是opengles的版本号:3.0
feature的取值可以是下面的字元串:
api 7 (android 2.1)開始支援的feature
feature_camera
feature_camera_autofocus
feature_camera_flash
feature_live_wallpaper
feature_sensor_light
feature_sensor_proximity
feature_telephony
feature_telephony_cdma
feature_touchscreen_multitouch
api 8 (android 2.2)開始支援的feature
feature_bluetooth
feature_location
feature_location_gps
feature_location_network
feature_microphone
feature_sensor_accelerometer
feature_sensor_compass
feature_touchscreen
feature_touchscreen_multitouch_distinct
feature_wifi
api 9 (android 2.3)
feature_audio_low_latency
feature_camera_front
feature_nfc
feature_sensor_barometer
feature_sensor_gyroscope
feature_sip
feature_sip_voip
feature_touchscreen_multitouch_jazzhand
api 11 (android 3.0)
feature_faketouch
api 12 (android 3.1)
feature_usb_accessory
feature_usb_host
api 13 (android 3.2)
feature_faketouch_multitouch_distinct
feature_faketouch_multitouch_jazzhand
feature_screen_landscape
feature_screen_portrait
api 14 (android 4.0)
feature_wifi_direct
api 17 (android 4.2)
feature_camera_any
api 18 (android 4.3)
feature_app_widgets
feature_bluetooth_le
feature_home_screen
feature_input_methods
api 19 (android 4.4)
feature_consumer_ir
feature_device_admin
feature_nfc_host_card_emulation
feature_sensor_step_counter
feature_sensor_step_detector
api 20 (android 4.4 watch)
feature_backup
feature_camera_external
feature_printing
feature_sensor_heart_rate
feature_watch
feature_webview
api 21 (android 5.0)
feature_audio_output
feature_camera_capability_manual_post_processing
feature_camera_capability_manual_sensor
feature_camera_capability_raw
feature_camera_level_full
feature_connection_service
feature_gamepad
feature_leanback
feature_live_tv
feature_managed_users
feature_opengles_extension_pack
feature_securely_removes_users
feature_sensor_ambient_temperature
feature_sensor_heart_rate_ecg
feature_sensor_relative_humidity
feature_verified_boot
api 23 (android 6.0)
feature_audio_pro
feature_automotive
feature_fingerprint
feature_hifi_sensors
feature_midi
api 24 (android 7.0)
feature_ethernet
feature_freeform_window_management
feature_nfc_host_card_emulation_nfcf
feature_picture_in_picture
feature_vr_mode
feature_vr_mode_high_performance
feature_vulkan_hardware_level
feature_vulkan_hardware_version
我們小結一下android 1.0的46個packagemanager api:
權限相關
removepermission
querypermissionsbygroup
getpermissioninfo
getpermissiongroupinfo
getallpermissiongroups
checkpermission
addpermission
禁掉元件相關
最佳比對元件
resolveservice
resolvecontentprovider
resolveactivity
query元件
queryintentservices
queryintentactivityoptions
queryintentactivities
querybroadcastreceivers
queryinstrumentation
querycontentproviders
uid/gid相關
getpackagesforuid
getnameforuid
getpackagegids(packagename)
get元件集合
getinstalledpackages
getinstalledapplications
get單個元件
getpackagearchiveinfo
getinstrumentationinfo
getapplicationinfo
getactivityinfo
getpackageinfo
getserviceinfo
getreceiverinfo
擷取資源
getxml
gettext
getresourcesforapplication(app)
getresourcesforapplication(apppackagename)
getresourcesforactivity
getdrawable
getdefaultactivityicon
getapplicationlabel
getapplicationicon
getactivityicon
最愛元件相關
比較簽名
checksignatures(pkg,pkg)
api 3 (android 1.5)新增了3個api:
getlaunchintentforpackage
issafemode
getsystemsharedlibrarynames
是否處于安全模式。
傳回so庫的路徑
api 5 (android 2.0)新增4個api,前面已經都講過了。
getinstallerpackagename
checksignatures(uid1,uid2)
hassystemfeature(name)
getsystemavailablefeatures
api 8 (android 2.2)新增3個api,2個名義包名轉換的,還有一個權限管理的,前面都已經講過了。
currenttocanonicalpackagenames
canonicaltocurrentpackagenames
addpermissionasync
api 9 (android 2.3)新增3個api,一個是getproviderinfo,終于把四大元件的getapi湊齊了。另外從本版開始有了logo的概念。
getproviderinfo
api 11 (android 3.0)隻增加一個api,為2.0的getinstallerpackagename提供一個setter接口。
setinstallerpackagename
api 14 (android 4.0)也隻增加一個api,用于安裝時校驗。
verifypendinginstall
api 17 (android 4.2)隻增加一個api,其實是對于上一個api的補足。
extendverificationtimeout
api 18 (android 4.3)新增一個權限相關api
getpackagesholdingpermissions
api 19 (android 4.4)隻新增一個api,終于可以通過intent查詢contentprovider了
queryintentcontentproviders
api 20 (kitkat_watch)新增兩個banner相關api.
api 21 (android 5.0)新增5個api,前三個是userbadged界面相關。
第4個提供了packageinstaller的接口。
最後一個是leanback界面下擷取launch intent的api
getpackageinstaller
getleanbacklaunchintentforpackage
api 23 (android 6.0)隻增加一個權限相關api
ispermissionrevokedbypolicy
api 24 (android 7.0)新增3個api。
systemm feature開始支援版本号。
終于可以擷取package的uid了。
hassystemfeature(name,version)
getpackageuid
getpackagegids(name,flags)