獲取所有已安裝程序列表
PackageManager pm =ctx.getPackageManager();
List<PackageInfo> packages = pm.getInstalledPackages(0); //獲取已安裝的app的基本信息
- 主要屬性:
info = package.applicationInfo :應用信息對象
info.packageName :應用程序包名
info.applicationInfo.loadLabel(new PackageManager()).toString() :應用程序名稱
info.sourceDir :安裝路徑
Drawable icon = info.loadIcon(pm)//圖標對象
-
int flags = applicationInfo.flags//標記,也稱為
狀態機
,可以記錄當前app的一些特性if ((flags & ApplicationInfo.FLAG_EXTERNAL_STORAGE) > 0) //就認為當前app具備FLAG_EXTERNAL_STORAGE特性 if ((flags & ApplicationInfo.FLAG_SYSTEM) > 0) { //當前app具備FLAG_SYSTEM屬性.就是系統程序
通過包名卸載應用程序
Uri packageUri = Uri.parse("package:" + currentApp.packageName);//包名,指定該應用
Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageUri);
startActivityForResult(uninstallIntent, 0);
- 不能卸載系統程序,容易報錯
通過包名打開一個應用程序
Intent intent = new Intent();
PackageManager pm = getPackageManager();
intent = pm.getLaunchIntentForPackage(currentApp.packageName);
startActivity(intent);
- 如果應用程序沒有啟動頁面,例如個別系統程序,service,receiver等,此時
intent
為空,所以需要判斷intent
是否為空.
調用系統分享功能
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");//分享內容的類型, 純文本
intent.putExtra(Intent.EXTRA_TEXT, "發現一個非常不錯的應用, 趕緊下載哦! 下載地址:https://play.google" +
".com/store/apps/details?id=" + currentApp.packageName);//設置分享的文本內容
startActivity(intent);
打開程序的詳細信息頁面
Intent infoIntent = new Intent();
infoIntent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); //設置動作過濾器,導向應用程序界面
Uri uri = Uri.fromParts("package", currentApp.packageName, null); //設置包名,需要打開的程序
infoIntent.setData(uri); //設置數據
startActivity(infoIntent);