通過已安裝的APP信息操作應用程序

獲取所有已安裝程序列表

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);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容