Android實(shí)現(xiàn)整理PackageManager獲取所有安裝程序信息
本文實(shí)例講述了Android實(shí)現(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è)計(jì)有所幫助。
相關(guān)文章
Android 調(diào)用系統(tǒng)相機(jī)拍攝獲取照片的兩種方法實(shí)現(xiàn)實(shí)例
這篇文章主要介紹了Android 調(diào)用系統(tǒng)相機(jī)拍攝獲取照片的兩種方法實(shí)現(xiàn)實(shí)例的相關(guān)資料,一種是通過Bundle來獲取壓縮過的照片,一種是通過SD卡獲取的原圖,需要的朋友可以參考下2016-11-11Android RecyclerView實(shí)現(xiàn)吸頂動態(tài)效果流程分析
RecyclerView是Android一個更強(qiáng)大的控件,其不僅可以實(shí)現(xiàn)和ListView同樣的效果,還有優(yōu)化了ListView中的各種不足。其可以實(shí)現(xiàn)數(shù)據(jù)縱向滾動,也可以實(shí)現(xiàn)橫向滾動(ListView做不到橫向滾動)。接下來講解RecyclerView的用法2022-12-12Android實(shí)現(xiàn)長按back鍵退出應(yīng)用程序的方法
這篇文章主要介紹了Android實(shí)現(xiàn)長按back鍵退出應(yīng)用程序的方法,實(shí)例分析了Android按鈕事件的操作技巧,需要的朋友可以參考下2015-05-05Android開發(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-12Android 自定義標(biāo)題欄 顯示網(wǎng)頁加載進(jìn)度的方法實(shí)例
Android 自定義標(biāo)題欄 顯示網(wǎng)頁加載進(jìn)度的方法實(shí)例,需要的朋友可以參考一下2013-06-06