2011-04-18 83 views
0

如何獲得完全「未知來源」應用程序列表在Android上? 什麼是標誌使用?如果不是這種方法,其他方法是什麼?和 如何編程?如何在Android上準確獲取「未知來源」應用程序列表?

PackageManager pm = this.getPackageManager(); 
    final List<PackageInfo> appinstalled = pm 
      .getInstalledPackages(what is flag??); // 

對不起,我的英語不好。 謝謝。

回答

0

其他人可能有更好的解決方案,但這裏是我能想出...

迭代通過所有已安裝的軟件包最好,比較每一個針對具有良好的簽名已知的「良好」的包,與checkSignatures(int,int)或checkSignatures(String,String)。如果checkSignatures的返回值是SIGNATURE_UNKNOWN_PACKAGE,那麼你有一個來自未知源的包。

否則,它看起來不像getInstalledPackages的任何標誌用於過濾未知來源。

+0

我想非市場應用程序的列表。 – Indyway 2011-04-18 07:32:36

+0

如何編碼? 請 – Indyway 2011-04-18 07:42:50

0

我知道這是一個老的文章,但我認爲下面的回答可以幫助你: https://stackoverflow.com/a/42248268/2212770

public static List<String> getAppsFromUnknownSources(Context context) 
{ 
    List<String> apps = new ArrayList<>(); 
    PackageManager packageManager = context.getPackageManager(); 
    List<PackageInfo> packList = packageManager.getInstalledPackages(0); 
    for (int i = 0; i < packList.size(); i++) 
    { 
    PackageInfo packInfo = packList.get(i); 
    boolean hasEmptyInstallerPackageName = packageManager. 
     getInstallerPackageName(packageInfo.packageName) == null; 
    boolean isUserInstalledApp = (packageInfo.applicationInfo.flags & 
     ApplicationInfo.FLAG_SYSTEM) == 0; 

    if (hasEmptyInstallerPackageName && isUserInstalledApp) 
    { 
     apps.add(packInfo.packageName); 
    } 
    } 

    return apps; 
} 
相關問題