Android實(shí)現(xiàn)獲取應(yīng)用程序相關(guān)信息列表的方法
本文所述為Androdi獲取手機(jī)應(yīng)用列表的方法,比如獲取到Android應(yīng)用的軟件屬性、大小和應(yīng)用程序路徑、應(yīng)用名稱(chēng)等,獲取所有已安裝的Android應(yīng)用列表,包括那些卸載了的,但沒(méi)有清除數(shù)據(jù)的應(yīng)用程序,同時(shí)在獲取到應(yīng)用信息的時(shí)候,判斷是不是系統(tǒng)的應(yīng)用程序,這是一個(gè)應(yīng)用管理器所必需具備的功能。
具體實(shí)現(xiàn)代碼如下:
//AppInfoProvider.java
package com.xh.ui;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.graphics.drawable.Drawable;
/**
* 類(lèi)名稱(chēng):AppInfoProvider
* 類(lèi)描述:獲取應(yīng)用程序的相關(guān)信息
* 創(chuàng)建人:LXH
*/
public class AppInfoProvider {
private PackageManager packageManager;
//獲取一個(gè)包管理器
public AppInfoProvider(Context context){
packageManager = context.getPackageManager();
}
/**
*獲取系統(tǒng)中所有應(yīng)用信息,
*并將應(yīng)用軟件信息保存到list列表中。
**/
public List<AppInfo> getAllApps(){
List<AppInfo> list = new ArrayList<AppInfo>();
AppInfo myAppInfo;
//獲取到所有安裝了的應(yīng)用程序的信息,包括那些卸載了的,但沒(méi)有清除數(shù)據(jù)的應(yīng)用程序
List<PackageInfo> packageInfos = packageManager.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
for(PackageInfo info:packageInfos){
myAppInfo = new AppInfo();
//拿到包名
String packageName = info.packageName;
//拿到應(yīng)用程序的信息
ApplicationInfo appInfo = info.applicationInfo;
//拿到應(yīng)用程序的圖標(biāo)
Drawable icon = appInfo.loadIcon(packageManager);
//拿到應(yīng)用程序的大小
//long codesize = packageStats.codeSize;
//Log.i("info", "-->"+codesize);
//拿到應(yīng)用程序的程序名
String appName = appInfo.loadLabel(packageManager).toString();
myAppInfo.setPackageName(packageName);
myAppInfo.setAppName(appName);
myAppInfo.setIcon(icon);
if(filterApp(appInfo)){
myAppInfo.setSystemApp(false);
}else{
myAppInfo.setSystemApp(true);
}
list.add(myAppInfo);
}
return list;
}
/**
*判斷某一個(gè)應(yīng)用程序是不是系統(tǒng)的應(yīng)用程序,
*如果是返回true,否則返回false。
*/
public boolean filterApp(ApplicationInfo info){
//有些系統(tǒng)應(yīng)用是可以更新的,如果用戶(hù)自己下載了一個(gè)系統(tǒng)的應(yīng)用來(lái)更新了原來(lái)的,它還是系統(tǒng)應(yīng)用,這個(gè)就是判斷這種情況的
if((info.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0){
return true;
}else if((info.flags & ApplicationInfo.FLAG_SYSTEM) == 0){//判斷是不是系統(tǒng)應(yīng)用
return true;
}
return false;
}
}
與實(shí)例相關(guān)的Java類(lèi)如下:
//AppInfo.java
package com.xh.ui;
import android.graphics.drawable.Drawable;
/**
* 類(lèi)名稱(chēng):AppInfo
* 類(lèi)描述:應(yīng)用程序類(lèi),包括了程序相關(guān)屬性
* 創(chuàng)建人:LXH
*/
public class AppInfo {
private Drawable icon;
private String appName;
private String packageName;
private boolean isSystemApp;
private long codesize;
public long getCodesize() {
return codesize;
}
public void setCodesize(long codesize) {
this.codesize = codesize;
}
public Drawable getIcon() {
return icon;
}
public void setIcon(Drawable icon) {
this.icon = icon;
}
public String getAppName() {
return appName;
}
public void setAppName(String appName) {
this.appName = appName;
}
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public boolean isSystemApp() {
return isSystemApp;
}
public void setSystemApp(boolean isSystemApp) {
this.isSystemApp = isSystemApp;
}
}
實(shí)例中配有詳盡的注釋?zhuān)x者可以在理解程序功能的基礎(chǔ)上根據(jù)自身項(xiàng)目需求加以改進(jìn)和完善。
- Android獲取apk程序簽名信息代碼示例
- Android開(kāi)發(fā)之在程序中時(shí)時(shí)獲取logcat日志信息的方法(附demo源碼下載)
- 如何判斷軟件程序是否聯(lián)網(wǎng) 聯(lián)網(wǎng)狀態(tài)提示信息Android實(shí)現(xiàn)
- Android實(shí)現(xiàn)整理PackageManager獲取所有安裝程序信息
- Android編程實(shí)現(xiàn)捕獲程序異常退出時(shí)的錯(cuò)誤log信息功能詳解
- Android ApplicationInfo 應(yīng)用程序信息的詳解
- Android編程獲取APP應(yīng)用程序基本信息輔助類(lèi)【APP名稱(chēng)、包名、圖標(biāo),版本號(hào)等】
- Android獲取手機(jī)型號(hào)/系統(tǒng)版本號(hào)/App版本號(hào)等信息實(shí)例講解
- Android開(kāi)發(fā)獲取系統(tǒng)中已安裝程序信息的方法
相關(guān)文章
Android遞歸方式刪除某文件夾下的所有文件(.mp3文件等等)
以刪除為例,當(dāng)然,對(duì)于遍歷某文件夾下的所有文件均可用這個(gè)方法。如搜索.mp3文件等,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下哈2013-06-06
android使用NotificationListenerService監(jiān)聽(tīng)通知欄消息
本篇文章主要介紹了android使用NotificationListenerService監(jiān)聽(tīng)通知欄消息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-01-01
Android實(shí)現(xiàn)藍(lán)牙客戶(hù)端與服務(wù)器端通信示例
這篇文章主要介紹了Android實(shí)現(xiàn)藍(lán)牙客戶(hù)端與服務(wù)器端通信示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-01-01
Android編程之播放器MediaPlayer實(shí)現(xiàn)均衡器效果示例
這篇文章主要介紹了Android編程之播放器MediaPlayer實(shí)現(xiàn)均衡器效果,結(jié)合具體實(shí)例形式分析了Android調(diào)用MediaPlayer相關(guān)API構(gòu)造均衡器的具體步驟與相關(guān)功能實(shí)現(xiàn)方法,需要的朋友可以參考下2017-08-08
Android實(shí)現(xiàn)可拖動(dòng)層疊卡片布局
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)可拖動(dòng)層疊卡片布局,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11
Android實(shí)現(xiàn)的秒表計(jì)時(shí)器示例
這篇文章主要介紹了Android實(shí)現(xiàn)的秒表計(jì)時(shí)器,結(jié)合完整實(shí)例形式分析了Android計(jì)時(shí)器的具體實(shí)現(xiàn)步驟與相關(guān)技巧,涉及Android針對(duì)日期與時(shí)間的操作方法,需要的朋友可以參考下2016-08-08
Android通過(guò)bin二進(jìn)制程序調(diào)用jar原理
最近在研究monkey測(cè)試,發(fā)現(xiàn)monkey測(cè)試的代碼都是JAVA編寫(xiě)的,通過(guò)編譯生成jar包,而我們?cè)趫?zhí)行測(cè)試時(shí)直接執(zhí)行/system/bin/monkey這個(gè)二進(jìn)制程序的,那么它是如何能調(diào)起java程序的呢,本文小編給大家介紹了Android通過(guò)bin二進(jìn)制程序調(diào)用jar原理,需要的朋友可以參考下2023-10-10
Android調(diào)用攝像頭拍照開(kāi)發(fā)教程
這篇文章主要為大家詳細(xì)介紹了Android調(diào)用攝像頭拍照的開(kāi)發(fā)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04

