中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android 中怎么利用ApplicationInfo獲取應用程序信息

發布時間:2021-06-29 15:11:59 來源:億速云 閱讀:490 作者:Leah 欄目:移動開發

這篇文章給大家介紹Android 中怎么利用ApplicationInfo獲取應用程序信息,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Android ApplicationInfo 應用程序信息

1、簡述

1 ApplicationInfo是android.content.pm包下的一個實體類,用于封裝應用的信息,flags是其中的一個成員變量public int flags = 0;用于保存應用的標志信息。

2 ApplicationInfo 通過它可以得到一個應用基本信息。
   這些信息是從AndroidManifest.xml的< application >標簽獲取的

3 ApplicationInfo對象里保存的信息都是<application>標簽里的屬性值

4 ApplicationInfo與ResolveInfo比較:前者能夠得到Icon、Label、meta-data、description。后者只能得到Icon、Label

2、獲取ApplicationInfo

2.1 、獲取手機上安裝所有程序對應的 ApplicationInfo

/**
* 獲取手機上安裝的所有的程序對應的 ApplicationInfo
* 它是通過解析AndroidManifest.xml的< application>標簽中得到的,所以它能得到所有的app
*
* 獲取手機上的所有的安裝的應用程序信息
* 參數為 標識  一般為 PackageManager.GET_UNINSTALLED_PACKAGES
*/
List<ApplicationInfo> list = packageManager.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);

2.2 、獲取指定包名對應的 ApplicationInfo

 /**
* 獲取指定應用程序 ApplicationInfo
* 參數一對應應用程序的包名
* 參數二 應用程序對應的標識 通常為 0
*/

      ApplicationInfo applicationInfo = packageManager.getApplicationInfo("com.androidlongs.contactsapplication", 0);

3、通過ApplicationInfo來獲取應用程序的 基本信息

3.1 、獲取應用程序對應的包名、應用名稱

//獲取應用圖標
Drawable drawable = applicationInfo.loadIcon(packageManager);

//獲取應用程序的 包名
String appPackageName = applicationInfo.packageName;

//獲取應用名
//參數 packageManager 是應用管理者對象 
String appName =applicationInfo.loadLabel(packageManager).toString();

3.2 、獲取應用程序對應數據的目錄以及占用的空間大小

//獲取應用存放數據目錄
String dir = applicationInfo.sourceDir;
Log.d("app ","應用存放數據目錄 " +dir);

 //獲取應用數據大小
ong length = new File(dir).length();

//轉換為 M
float size = length*1f/1024/1024;
Log.d("app ","應用數據大小 " +length+"\t"+size);

3.3 、判斷是否安裝在外置儲存空間存

//判斷是否安裝在外存
int flags = applicationInfo.flags;
if((flags&ApplicationInfo.FLAG_EXTERNAL_STORAGE)==ApplicationInfo.FLAG_EXTERNAL_STORAGE){
  Log.d("app "," 安裝在 外置存儲空間 ");
}else {
  Log.d("app "," 安裝在 內置存儲空間 ");
}

3.4 、判斷應用程序是否是系統應用

//判斷是否是系統應用
if((flags&ApplicationInfo.FLAG_SYSTEM)==ApplicationInfo.FLAG_SYSTEM){
  Log.d("app "," 是系統應用 ");
}else{
  Log.d("app "," 不是系統應用 ");
}

3.5 、manageSpaceActivityName

/**
 * 從”android:manageSpaceActivity“屬性得到
 * 用于指定一個Activity來管理數據,
 * 它最終會出現在設置->應用程序管理中,
 * 默認為按鈕為”清除數據”,指定此屬性后,該按鈕可點擊跳轉到該Activity, 讓用戶選擇性清除哪些數據。若不設置則為null.
 */
String activityName = applicationInfo.manageSpaceActivityName;
Log.i("applicationInfo", "activityName: " + activityName);

3.6 、獲取應用程序運行的進程

/**
 * 從”android:process“屬性得到,注明應用運行的進程名。或不設置則默認為應用包名。
 */
String processName = applicationInfo.processName;
Log.i("applicationInfo", "processName: " + processName);

3.7 、其他配置信息簡述

// 配置文件中的android:backupAgent屬性值,用于備份
      String backupAgentName = applicationInfo.backupAgentName;
      Log.i("applicationInfo", "backupAgentName: " + backupAgentName);
      // 獲取繼承Application類的對象,維護全局的Application狀態
      //但一般都不用繼承的方式,可以通過Context.getApplicationContext()方法得到
      String className = applicationInfo.className;
      Log.i("applicationInfo", "className: " + className);




      /**
       * 可選項,訪問當前應用所有組件需要聲明的權限,從”android:permission“屬性得到。
       */
      String permisson = applicationInfo.permission;
      Log.i("applicationInfo", "permisson: " + permisson);
      // 創建對象時,傳入的是GET_SHARED_LIBRARY_FILES該屬性才有值
      String[] files = applicationInfo.sharedLibraryFiles;
      Log.i("applicationInfo", "files: " + files);
      // 存放數據的路徑 應用數據目錄。
      String dataPath = applicationInfo.dataDir;
      Log.i("applicationInfo", "dataPath: " + dataPath);
      // 本地路徑 JNI本地庫存放路徑。
      String nativePath = applicationInfo.nativeLibraryDir;
      Log.i("applicationInfo", "nativePath:" + nativePath);
      // 公共資源路徑
      String punlicSourcePath = applicationInfo.publicSourceDir;
      Log.i("applicationInfo", "punlicSourcePath: " + punlicSourcePath);
      // 資源路徑 應用APK的全路徑
      String sourcePath = applicationInfo.sourceDir;
      Log.i("applicationInfo", "sourcePath: " + sourcePath);

      /**
       * 當前應用所有Activity的默認task密切性。
       * 可以參考ActivityInfo的taskAffinity,從”android:taskAffinity“屬性得到。
       * 具體taskAffinity是怎么影響到Activity在task的啟動, 后面會在Activity啟動模式中細講
       */
      String taskAffinity = applicationInfo.taskAffinity;
      Log.i("applicationInfo", "taskAffinity: " + taskAffinity);
      // 如果是false,代表application里的所有組件都禁用
      boolean enable = applicationInfo.enabled;
      Log.i("applicationInfo", "enable: " + enable);
      // 表述資源文件的標識
      int descriRes = applicationInfo.descriptionRes;
      Log.i("applicationInfo", "descriRes: " + descriRes);
      int flag = applicationInfo.flags;
      Log.i("applicationInfo", "flag: " + flag);
      // 指定smallest screen width的值,超過這個值,就要開啟屏幕兼容
      int compatibleWidth = applicationInfo.compatibleWidthLimitDp;//android:compatibleWidthLimitDp屬性
      Log.i("applicationInfo", "compatibleWidth: " + compatibleWidth);
      // 同上,只是這時候用戶無法禁止屏幕兼容模式,說明是強制啟動屏幕兼容
      int largestWidth = applicationInfo.largestWidthLimitDp;//android:largestWidthLimitDp屬性
      Log.i("applicationInfo", "largestWidth: " + largestWidth);
      // 所需屏幕空間的最短尺寸,
      int samllestWidth = applicationInfo.requiresSmallestWidthDp;//android:requiresSmallestWidthDp屬性
      Log.i("applicationInfo", "samllestWidth: " + samllestWidth);
      // 應用所需的最小sdk版本
      int sdkVersion = applicationInfo.targetSdkVersion;
      Log.i("applicationInfo", "sdkVersion: " + sdkVersion);
      int theme = applicationInfo.theme;
      Log.i("applicationInfo", "theme: " + theme);//android:theme=
      int uid = applicationInfo.uid;
      Log.i("applicationInfo", "uid: " + uid);
      // 配置文件中的uiOptions屬性的值
      int uiOptions = applicationInfo.uiOptions;
      Log.i("applicationInfo", "uiOptions: " + uiOptions);

關于Android 中怎么利用ApplicationInfo獲取應用程序信息就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

和政县| 金昌市| 会同县| 宝兴县| 萨嘎县| 罗平县| 平利县| 兴化市| 维西| 南江县| 南投县| 乐安县| 泸定县| 宽甸| 德州市| 江川县| 新闻| 邢台市| 射洪县| 肇州县| 襄城县| 扎囊县| 中西区| 额济纳旗| 监利县| 嘉鱼县| 长乐市| 汝城县| 洪泽县| 扎鲁特旗| 淅川县| 博白县| 柘城县| 泾川县| 樟树市| 乌拉特后旗| 三原县| 长汀县| 黑水县| 大港区| 庄浪县|