Android開(kāi)發(fā)獲取系統(tǒng)中已安裝程序信息的方法
本文實(shí)例講述了Android開(kāi)發(fā)獲取系統(tǒng)中已安裝程序信息的方法。分享給大家供大家參考,具體如下:
public class AppInfoParser {
private static String tag = "AppInfoParser";
public static List<AppInfo> getAppInfos(Context context){
//首先獲取到包的管理者
PackageManager packageManager = context.getPackageManager();
//獲取到所有的安裝包
List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);
ArrayList<AppInfo> appInfos = new ArrayList<>();
for (PackageInfo installedPackage : installedPackages) {
AppInfo appInfo = new AppInfo();
//程序包名
String packageName = installedPackage.packageName;
appInfo.setPackageName(packageName);
//獲取到圖標(biāo)
Drawable icon = installedPackage.applicationInfo.loadIcon(packageManager);
appInfo.setIcon(icon);
//獲取到應(yīng)用的名字
String appName = installedPackage.applicationInfo.loadLabel(packageManager).toString();
appInfo.setAppName(appName);
//獲取到安裝包的路徑
String sourceDir = installedPackage.applicationInfo.sourceDir;
File file = new File(sourceDir);
//獲取到安裝apk的大小
long apkSize = file.length();
//格式化apk的大小
appInfo.setApkSize(Formatter.formatFileSize(context,apkSize));
int flags = installedPackage.applicationInfo.flags;
//判斷當(dāng)前是否是系統(tǒng)app
if((flags & ApplicationInfo.FLAG_SYSTEM) !=0){
//那么就是系統(tǒng)app
appInfo.setUserApp(false);
}else{
//那么就是用戶(hù)app
appInfo.setUserApp(true);
}
if((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE)!=0){
//那么當(dāng)前安裝的就是sd卡
appInfo.setSD(true);
}else{
//那么就是手機(jī)內(nèi)存
appInfo.setSD(false);
}
appInfos.add(appInfo);
}
return appInfos;
}
}
public class AppInfo {
//應(yīng)用圖標(biāo)
private Drawable icon;
//應(yīng)用的名字
private String appName;
//應(yīng)用程序的大小
private String apkSize;
//表示用戶(hù)程序
private boolean isUserApp;
//存儲(chǔ)的位置.
private boolean isSD;
private String packageName;
public String getPackageName() {
return packageName;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
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 getApkSize() {
return apkSize;
}
public void setApkSize(String apkSize) {
this.apkSize = apkSize;
}
public boolean isUserApp() {
return isUserApp;
}
public void setUserApp(boolean isUserApp) {
this.isUserApp = isUserApp;
}
public boolean isSD() {
return isSD;
}
public void setSD(boolean isSD) {
this.isSD = isSD;
}
@Override
public String toString() {
return "AppInfo{" +
"appName='" + appName + '\'' +
", apkSize='" + apkSize + '\'' +
", isUserApp=" + isUserApp +
", isSD=" + isSD +
'}';
}
}
更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Android開(kāi)發(fā)入門(mén)與進(jìn)階教程》、《Android調(diào)試技巧與常見(jiàn)問(wèn)題解決方法匯總》、《Android基本組件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》及《Android控件用法總結(jié)》
希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。
- Android獲取apk程序簽名信息代碼示例
- Android實(shí)現(xiàn)獲取應(yīng)用程序相關(guān)信息列表的方法
- 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í)例講解
相關(guān)文章
Android添加自定義下拉刷新布局阻尼滑動(dòng)懸停彈動(dòng)畫(huà)效果
這篇文章主要為大家介紹了Android添加自定義下拉刷新布局阻尼滑動(dòng)懸停彈動(dòng)畫(huà)效果詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Android Service的啟動(dòng)過(guò)程分析
這篇文章主要介紹了Android Service的啟動(dòng)過(guò)程分析的相關(guān)資料,需要的朋友可以參考下2017-04-04
Android序列化接口Parcelable與Serializable接口對(duì)比
我們使用 Intent 傳遞數(shù)據(jù)的時(shí)候,putExtra() 所支持的數(shù)據(jù)類(lèi)型事有限的,當(dāng)需要傳遞自定義對(duì)象的時(shí)候就需要序列化。Serializable更簡(jiǎn)單但是會(huì)把整個(gè)對(duì)象進(jìn)行序列化因此效率比Parcelable低一些2023-02-02
MTK Android平臺(tái)開(kāi)發(fā)流程
這篇文章主要介紹了MTK在Android平臺(tái)開(kāi)發(fā)的流程,一共分析了44個(gè)步驟,需要的朋友學(xué)習(xí)下吧。2017-12-12
Android中Activity和Fragment傳遞數(shù)據(jù)的兩種方式
本篇文章主要介紹了Android中Activity和Fragment傳遞數(shù)據(jù)的兩種方式,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-09
Android自定義多節(jié)點(diǎn)進(jìn)度條顯示的實(shí)現(xiàn)代碼(附源碼)
這篇文章主要介紹了Android自定義多節(jié)點(diǎn)進(jìn)度條顯示的實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03
Android自定義View實(shí)現(xiàn)QQ運(yùn)動(dòng)積分轉(zhuǎn)盤(pán)抽獎(jiǎng)功能
這篇文章主要為大家詳細(xì)介紹了Android自定義View實(shí)現(xiàn)QQ運(yùn)動(dòng)積分轉(zhuǎn)盤(pán)抽獎(jiǎng)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
fragment中的add和replace方法的區(qū)別淺析
使用 FragmentTransaction 的時(shí)候,它提供了這樣兩個(gè)方法,一個(gè) add , 一個(gè) replace ,對(duì)這兩個(gè)方法的區(qū)別一直有點(diǎn)疑惑。下面小編通過(guò)本文給大家簡(jiǎn)單介紹下fragment中的add和replace方法的區(qū)別,一起看看吧2017-01-01
Android入門(mén):多線(xiàn)程斷點(diǎn)下載詳細(xì)介紹
本篇文章主要介紹了 Android多線(xiàn)程斷點(diǎn)下載,即文件在下載一部分中斷后,可繼續(xù)接著已有進(jìn)度下載,有需要的可以了解一下。2016-11-11

