Android中區分系統程式和安裝程式
在google上輸入以上的關鍵字+ android,可以搜到的程式碼
List<PackageInfo>
packs = getPackageManager().getInstalledPackages(
0
);
雖然,有些程式碼號稱可以過濾掉系統自身的應用程式,但是隻要細看程式碼就會發現,好像裡面的那個布林變數沒有起到什麼過濾的作用。
方法一:通過獲取的安裝包(包括安裝的與系統自身的應用程式),對其android.content.pm.PackageInfo的packageName 進行過濾,
但是Android與google的包比較容易過濾掉,但需要對不同產商進行適配;
方法二:列舉 \data\app 資料夾,其下的*.apk檔案 就是本機安裝的軟體,而\system\App下的*.apk檔案就是系統自帶的軟體,
由於普通的程式是無法讀取這兩個資料夾的,需要root許可權吧,因此該方法也行不通(用File.listFiles() + android.permission.FACTORY_TEST 許可權 還是不能列舉出檔案)
雖然不能列舉資料夾 "\data\app\",但我們可以訪問(read)資料夾"\data\app\"下的所有檔案,因此可以用如下的方法來獲取本機上已經安裝的軟體(排除系統的應用程式):
PackageManager pckMan = getPackageManager();
List<PackageInfo> packs = pckMan.getInstalledPackages(0);
count = packs.size();
String name;
int installedNum = 0;
for(int i = 0; i < count; i++) {
PackageInfo p = packs.get(i);
if (p.versionName == null)
continue;
方法三、可以通過uid來過濾系統系統的安裝包,因為android系統中的uid從 1000 ~ 9999 都是給系統程式保留的,所以只要判斷package的uid > 10000即可判定該程式是非系統程式。
if
(p.applicationInfo.uid
>
10000
)
//非系統程式
uid是程式在安裝的時候由系統分配的。
方法四:這個方法應該是最優的。在廣告殺手中用的這個區分系統還是第三方軟體
ApplicationInfo appInfo = p.applicationInfo;
/**
* Value for {@link #flags}: if set, this application is installed in the
* device's system image.
*/
if((appInfo.flags & ApplicationInfo.FLAG_SYSTEM) > 0)
//系統程式
else
//不是系統程式
相關文章
- android 在程式碼中安裝apk的方法AndroidAPK
- 下載 macOS 系統安裝程式的方法Mac
- android 程式碼安裝和解除安裝apkAndroidAPK
- 程式管理程式supervisor安裝和使用
- 安裝Windows 7 "安裝程式無法建立新的系統分割槽"Windows
- 如何區分CRM系統和呼叫中心?
- Linux系統中nslookup和dig安裝使用Linux
- 作業系統-執行緒和程式的區別作業系統執行緒
- 作業系統_程式和執行緒的區別作業系統執行緒
- Linux系統中安裝pipLinux
- PHP 一鍵安裝擴充套件的程式-(Windows 系統)PHP套件Windows
- Centos6.8系統安裝程式碼防毒軟體:ClamAVCentOS防毒
- Xperia 1iii 日版 免root 解除安裝系統程式
- win10系統怎麼解除安裝已安裝的軟體應用程式Win10
- 程式中fork和vfork的區別
- 網際網路系統中的程式碼怎麼分層?
- AIX系統中安裝TSM過程AI
- 如何在Mac系統中安裝Win7系統MacWin7
- 如何區分Linux和Unix?作業系統!Linux作業系統
- 如何在 Debian/Ubuntu 系統中檢查程式包是否安裝?Ubuntu
- win10系統下安裝Mail應用程式的方法Win10AI
- win10系統下安裝WiFi驅動程式的方法Win10WiFi
- win10系統如何解除安裝Modern應用程式Win10
- 直播系統程式碼,android中幾種常用的彈框Android
- linux和windows雙系統安裝LinuxWindows
- 系統安裝
- Android程式碼實現APK檔案的安裝與解除安裝AndroidAPK
- 短視訊程式開發,Android:呼叫系統拍照和相簿Android
- android重新啟動應用程式和重新啟動系統 .Android
- 非法修改系統中的程式
- Linux系統應用程式和核心模組的區別(轉)Linux
- win10系統無法解除安裝程式提示請等待當前程式完成解除安裝或更改如何解決Win10
- 【android】獲取手機安裝的所有程式Android
- Wix安裝程式中判斷是否安裝的.net framwork 4.5
- android 4.0.4系統下實現apk的靜默安裝和啟動AndroidAPK
- VMware 中解除安裝安裝Ubuntu 20.04.1 ——Ubuntu系統配置(一)Ubuntu
- Android程式(Processes)和任務(tasks)的區別Android
- UNIX系統中安裝SAP的步驟