Andriod PackageManager使用
1.獲取系統應用程式列表
Android系統提供了很多服務管理類,包括ActivityManager,PowerManager,AudioManager,PackageManager
PackageManager的功能:
.安裝,解除安裝應用
.查詢Permission相關資訊
.查詢Aplication相關資訊(application,activity,receiver,service,provider及相應屬性等)
.查詢已經安裝的應用
.清除使用者資料,快取,程式碼段等
.顯示系統安裝的應用程式列表或者系統程式列表
相關類的介紹:
PackageItemInfo
說明:androidManifest.xml檔案中所有節點的基類。提供了這些節點的基本資訊:label,icon,meta -data,他並不是直接使用的,而是由子類繼承然後呼叫相應的方法
常用欄位:
public int icon:獲取該資源圖片在R檔案的值(對應於android:icon屬性)
public int label:獲取該label對應R檔案的值(對應於android:label屬性)
public String name:獲取該節點的name(對應於android:name屬性)
public String packagename:獲取該應用程式包名(對應於android:packageName屬性)
常用方法:
Drawabel loadIcon(PackaManager pm):獲取當前應用程式的影象
CharSequence loadLabel(PackageManager pm):獲取當前應用程式的label
2.ActivityInfo類:
繼承自PackageItemInfo
說明:獲取應用程式中<activity/>獲取<receiver/>節點資訊
我們可以通過它來獲取我們設定的任何屬性,包括:theme,launchMode等
常用的方法繼承至PackageIntemInfo類中的loadIcon()和loadLabel()
3.ServiceInfo類
說明:同ActivityInfo類似,同樣的繼承自PackageItemInfo,只不過它表示是<service>節點資訊
4.ApplicationInfo類:
繼承自PackageItemInfo
說明:獲取一個特定應用程式中<application>節點的
欄位說明:
flags欄位:FLAG_SYSTEM 系統應用程式
FLAG_EXTERNAL_STORAGE 表示該應用安裝在sdcard中
常用的方法繼承至:packageItemInfo類中的LoadIcon()和loadLabel()
5.ResolveInfo類:
說明:根據<Intent>節點來獲取上一層目錄的資訊,通常是<activity>,<receiver>,<service>節點資訊。
常用欄位:
public ActivityInfo activiInfo獲取activityInfo物件,即<activity>或<receiver>節點資訊
public ServiceInfo serviceInfo 獲取ServiceInfo物件,即<activity>節點資訊
常用方法:
Drawabel loadIcon(PackaManager pm):獲取當前應用程式的影象
CharSequence loadLabel(PackageManager pm):獲取當前應用程式的label
6.PackageInfo類
說明:獲取AndroidManifest.xml欄位資訊
常用欄位資訊:
public String packageName
public ActivityInfo[]activities
public ApplicationInfo applicationInfo
public ActivityInfo[]receiver
public ServiceInfo[]services
7.PackageManager
說明:獲取系統安裝的程式
可以通過:getPackageManager() 方法獲取
常用的方法:
public abstract PackageManager getPackageManager()
public abstract Drawable getApplicationIcon(String packageName)
public abstract ApplicationInfo getApplicationInfo(String packageName,int flags)
public abstract List<ApplicationInfo>getInstalledApplication(int flags)
方法說明:flags一般是進行過濾使用的,flages一般:GET_UNINSTALLED_PACKAGE,那麼返回所以的ApplicationInfo.我們可以通過ApplicationInfo的flags過濾,得到我們需要的
public abstract List<PackageInfo>getInstalledPackage(int flags)
public abstract ResolveInfo resolverActivity(Intent intent,int flags)
引數:Intent查詢條件,Activity所配置的action和category flags:MATCH_DEFAULT_ONLY,category:必須帶有CATEGORY_DEFAULT的Activity,才匹配GET_INTENT_FILTER:匹配Intent條件即可,GET_RESOLVED_FILTER:匹配Intent條件即可
功能:返回給定條件的ResolverInfo物件(本質上是Activity)
public abstract List<ResolveInfo>queryIntentActivities(Intent intent,int flags)
功能:返回給定條件的所有ResolveInfo物件(本質上是Activity),集合物件
public abstract ResolveInfo resolveService(Intent intent,int flags)
功能:返回給定條件的ResolveInfo物件(本質上是Service)
public abstract List<ResolveInfo>queryIntentServices(Intent intent,int flags)
功能:返回給定條件的所有ResolveInfo物件(本質上是Service),集合物件
List<PackageInfo> packs = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
Intent intent=new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo>resolveInfos=(List<ResolveInfo>) pm.queryIntentActivities(intent, PackageManager.GET_UNINSTALLED_PACKAGES);
for(ResolveInfo info:resolveInfos){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("icon",info.loadIcon(pm));
map.put("appName",info.loadLabel(pm));
map.put("packageName",info.activityInfo.packageName);
items.add(map);
}
Android系統提供了很多服務管理類,包括ActivityManager,PowerManager,AudioManager,PackageManager
PackageManager的功能:
.安裝,解除安裝應用
.查詢Permission相關資訊
.查詢Aplication相關資訊(application,activity,receiver,service,provider及相應屬性等)
.查詢已經安裝的應用
.清除使用者資料,快取,程式碼段等
.顯示系統安裝的應用程式列表或者系統程式列表
相關類的介紹:
PackageItemInfo
說明:androidManifest.xml檔案中所有節點的基類。提供了這些節點的基本資訊:label,icon,meta -data,他並不是直接使用的,而是由子類繼承然後呼叫相應的方法
常用欄位:
public int icon:獲取該資源圖片在R檔案的值(對應於android:icon屬性)
public int label:獲取該label對應R檔案的值(對應於android:label屬性)
public String name:獲取該節點的name(對應於android:name屬性)
public String packagename:獲取該應用程式包名(對應於android:packageName屬性)
常用方法:
Drawabel loadIcon(PackaManager pm):獲取當前應用程式的影象
CharSequence loadLabel(PackageManager pm):獲取當前應用程式的label
2.ActivityInfo類:
繼承自PackageItemInfo
說明:獲取應用程式中<activity/>獲取<receiver/>節點資訊
我們可以通過它來獲取我們設定的任何屬性,包括:theme,launchMode等
常用的方法繼承至PackageIntemInfo類中的loadIcon()和loadLabel()
3.ServiceInfo類
說明:同ActivityInfo類似,同樣的繼承自PackageItemInfo,只不過它表示是<service>節點資訊
4.ApplicationInfo類:
繼承自PackageItemInfo
說明:獲取一個特定應用程式中<application>節點的
欄位說明:
flags欄位:FLAG_SYSTEM 系統應用程式
FLAG_EXTERNAL_STORAGE 表示該應用安裝在sdcard中
常用的方法繼承至:packageItemInfo類中的LoadIcon()和loadLabel()
5.ResolveInfo類:
說明:根據<Intent>節點來獲取上一層目錄的資訊,通常是<activity>,<receiver>,<service>節點資訊。
常用欄位:
public ActivityInfo activiInfo獲取activityInfo物件,即<activity>或<receiver>節點資訊
public ServiceInfo serviceInfo 獲取ServiceInfo物件,即<activity>節點資訊
常用方法:
Drawabel loadIcon(PackaManager pm):獲取當前應用程式的影象
CharSequence loadLabel(PackageManager pm):獲取當前應用程式的label
6.PackageInfo類
說明:獲取AndroidManifest.xml欄位資訊
常用欄位資訊:
public String packageName
public ActivityInfo[]activities
public ApplicationInfo applicationInfo
public ActivityInfo[]receiver
public ServiceInfo[]services
7.PackageManager
說明:獲取系統安裝的程式
可以通過:getPackageManager() 方法獲取
常用的方法:
public abstract PackageManager getPackageManager()
public abstract Drawable getApplicationIcon(String packageName)
public abstract ApplicationInfo getApplicationInfo(String packageName,int flags)
public abstract List<ApplicationInfo>getInstalledApplication(int flags)
方法說明:flags一般是進行過濾使用的,flages一般:GET_UNINSTALLED_PACKAGE,那麼返回所以的ApplicationInfo.我們可以通過ApplicationInfo的flags過濾,得到我們需要的
public abstract List<PackageInfo>getInstalledPackage(int flags)
public abstract ResolveInfo resolverActivity(Intent intent,int flags)
引數:Intent查詢條件,Activity所配置的action和category flags:MATCH_DEFAULT_ONLY,category:必須帶有CATEGORY_DEFAULT的Activity,才匹配GET_INTENT_FILTER:匹配Intent條件即可,GET_RESOLVED_FILTER:匹配Intent條件即可
功能:返回給定條件的ResolverInfo物件(本質上是Activity)
public abstract List<ResolveInfo>queryIntentActivities(Intent intent,int flags)
功能:返回給定條件的所有ResolveInfo物件(本質上是Activity),集合物件
public abstract ResolveInfo resolveService(Intent intent,int flags)
功能:返回給定條件的ResolveInfo物件(本質上是Service)
public abstract List<ResolveInfo>queryIntentServices(Intent intent,int flags)
功能:返回給定條件的所有ResolveInfo物件(本質上是Service),集合物件
List<PackageInfo> packs = pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
Intent intent=new Intent();
intent.setAction(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo>resolveInfos=(List<ResolveInfo>) pm.queryIntentActivities(intent, PackageManager.GET_UNINSTALLED_PACKAGES);
for(ResolveInfo info:resolveInfos){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("icon",info.loadIcon(pm));
map.put("appName",info.loadLabel(pm));
map.put("packageName",info.activityInfo.packageName);
items.add(map);
}
相關文章
- 【Android PackageManager】使用PackageManager讀取APK ICON時候的大坑AndroidPackageAPK
- 使用mumu模擬器抓包 andriod appAPP
- 【Android】使用PackageManager讀取APK ICON時候的大坑AndroidPackageAPK
- Andriod開發工具
- Andriod破解之道(一)
- andriod sdk 安裝
- Android中獲取應用程式(包)的資訊-----PackageManager的使用(一)AndroidPackage
- Android中獲取應用程式(包)的大小-----PackageManager的使用(二)AndroidPackage
- [Andriod] 元件化路由跳轉元件化路由
- andriod開發環境搭建,開發環境
- 通過 PackageManager 獲得你想要的 App 資訊PackageAPP
- 如何玩轉andriod遠控(androrat)
- andriod搭建自己的輪詢框架框架
- andriod環境搭建(Mac機器)Mac
- 百度地圖軌跡(Andriod SDK)地圖
- Andriod 網路框架 OkHttp 原始碼解析框架HTTP原始碼
- 本站 andriod-App 下載賊慢APP
- Andriod專案記憶體洩漏流程記憶體
- andriod 原始碼開發,打包so到apk原始碼APK
- Andriod 實現一個類微信聊天介面 (二)
- JS判斷當前裝置是 PC IOS AndriodJSiOS
- Android packageManager.setComponentEnabledSetting()和setApplicationEnabledSetting()方法介紹AndroidPackageAPP
- 微軟成立新部門,暗示將整合 Win 11和 Andriod微軟
- Andriod Studio如何修改APP軟體名和頭像APP
- Asymco:Andriod應用下載量即將超過iOSiOS
- Andriod給textview文字關鍵字迴圈標亮加粗TextView
- Exynos4412_andriod fastboot 燒寫android系統ASTbootAndroid
- 【Android】判斷某個AP是否在系統中存在(PackageManager與PackageInfo)AndroidPackage
- 像 npm 一樣在 Andriod 專案中引入 Gradle 依賴NPMGradle
- audio元素和video元素在ios和andriod觸屏播放IDEiOS
- MAC平臺 Andriod Studio 同WI-FI下遠端除錯Mac除錯
- [轉]andriod的apk檔案相關的編譯反編譯工具APK編譯
- [Appium] Ios 有類似 Andriod 的 noReset 來清掉應用的快取嗎APPiOS快取
- Android:隨筆——記錄一些Andriod開發中不常用的庫Android
- Flutter與Native的混合開發之--Andriod專案呼叫Flutter專案頁面-初探Flutter
- laravel使用EasyWeChat 使用Laravel
- 使用FTP限制使用者FTP
- 配置vsftpd匿名使用服務,個人使用者使用以及虛擬使用者使用配置細節!FTP