Android實現(xiàn)整理PackageManager獲取所有安裝程序信息
本文實例講述了Android實現(xiàn)整理PackageManager獲取所有安裝程序信息的方法。分享給大家供大家參考,具體如下:
List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);//獲取安裝程序的包名
for (int i = 0; i < packs.size(); i++) {
PackageInfo p = packs.get(i);//某個包信息
//打?。喊姹竞茫姹久?,包名....
Log.i("", "-------" + p.versionCode + "-------" + p.versionName + "--------"
+ p.packageName + "-------" + p.applicationInfo);
}
versionCode, versionName 的值來源AndroidManifest.xml文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.testapk" android:versionCode="2" // p.versionCode android:versionName="Version1" // p.versionName >
在代碼中獲取當(dāng)前應(yīng)用程序的versionCode,versionName
int versionCode = 0;
try {
versionCode = getPackageManager().getPackageInfo(this.getPackageName(), 0).versionCode;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
代碼:
// 通過檢測包名,判斷APK是否安裝
private boolean checkPackageExist(boolean getSysPackages) {
boolean packageExist = false;
int versionCode = 0;
try {
versionCode = getPackageManager().getPackageInfo(this.getPackageName(), 0).versionCode;
} catch (NameNotFoundException e) {
e.printStackTrace();
}
Log.i("", "-------" + this.getPackageName() + "-------" + versionCode);//獲取當(dāng)前包名
List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
for (int i = 0; i < packs.size(); i++) {
PackageInfo p = packs.get(i);
Log.i("", "-------" + p.versionCode + "-------" + p.versionName + "--------"
+ p.packageName + "-------" + p.applicationInfo);
if ((!getSysPackages) && (p.versionName == null)) {
continue;
}
if (p.packageName.equalsIgnoreCase(PACKAGENAME)) {
packageExist = true;
break;
}
}
return packageExist;
}
//安裝APK
private void installApk() {
if (checkFileExist(fileRoot + fileName)) {
Intent intent = new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(android.content.Intent.ACTION_VIEW);
String type = "application/vnd.android.package-archive";
intent.setDataAndType(Uri.parse("file://" + fileRoot + fileName),
type);
startActivity(intent);
} else {
downloadapk();
}
}
通過以上代碼,再加上一些網(wǎng)路下載的代碼,就可以做一個簡體的應(yīng)用市場了。
希望本文所述對大家Android程序設(shè)計有所幫助。
相關(guān)文章
Android 調(diào)用系統(tǒng)相機(jī)拍攝獲取照片的兩種方法實現(xiàn)實例
這篇文章主要介紹了Android 調(diào)用系統(tǒng)相機(jī)拍攝獲取照片的兩種方法實現(xiàn)實例的相關(guān)資料,一種是通過Bundle來獲取壓縮過的照片,一種是通過SD卡獲取的原圖,需要的朋友可以參考下2016-11-11
Android RecyclerView實現(xiàn)吸頂動態(tài)效果流程分析
RecyclerView是Android一個更強(qiáng)大的控件,其不僅可以實現(xiàn)和ListView同樣的效果,還有優(yōu)化了ListView中的各種不足。其可以實現(xiàn)數(shù)據(jù)縱向滾動,也可以實現(xiàn)橫向滾動(ListView做不到橫向滾動)。接下來講解RecyclerView的用法2022-12-12
Android實現(xiàn)長按back鍵退出應(yīng)用程序的方法
這篇文章主要介紹了Android實現(xiàn)長按back鍵退出應(yīng)用程序的方法,實例分析了Android按鈕事件的操作技巧,需要的朋友可以參考下2015-05-05
Android開發(fā)中怎樣調(diào)用系統(tǒng)Email發(fā)送郵件(多種調(diào)用方式)
在Android中調(diào)用其他程序進(jìn)行相關(guān)處理,幾乎都是使用的Intent,所以,Email也不例外,所謂的調(diào)用Email,只是說Email可以接收Intent并做這些事情2013-06-06
詳解AndroidStudio JNI +Gradle3.0以上JNI爬坑之旅
這篇文章主要介紹了詳解AndroidStudio JNI +Gradle3.0以上JNI爬坑之旅,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-12-12
Android 自定義標(biāo)題欄 顯示網(wǎng)頁加載進(jìn)度的方法實例
Android 自定義標(biāo)題欄 顯示網(wǎng)頁加載進(jìn)度的方法實例,需要的朋友可以參考一下2013-06-06

