2016-06-23 16 views
3

Ich habe versucht, alle installierten apk auszukommen:Wie alle Paket nur in Apps Bildschirm angezeigt bekommen

public ArrayList<InfoObject> getInstalledApps(boolean getSysPackages) { 
    ArrayList<InfoObject> res = new ArrayList<InfoObject>(); 
    List<PackageInfo> packs = mContext.getPackageManager().getInstalledPackages(0); 
    for(int i=0;i<packs.size();i++) { 
     PackageInfo p = packs.get(i); 

     Log.v("PACKAGE GET","" +p.packageName + "flags => " + p.applicationInfo.flags); 
     /* if ((p.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) { 
      continue ; 
     }*/ 
     InfoObject newInfo = new InfoObject(); 
     newInfo.appname = p.applicationInfo.loadLabel(mContext.getPackageManager()).toString(); 
     newInfo.pname = p.packageName; 
     newInfo.versionName = p.versionName; 
     newInfo.versionCode = p.versionCode; 
     newInfo.icon = p.applicationInfo.loadIcon(mContext.getPackageManager()); 
     res.add(newInfo); 
    } 
    return res; 
} 

Es funktioniert gut !!

Aber ohne ApplicationInfo.FLAG_SYSTEM, zeige ich meine installiert apk nur (Facebook, Skype)

mit ApplicationInfo.FLAG_SYSTEM zeige ich alle apk (Facebook, Skype) und alle System apk.

Mein Problem ist, dass von System apk, wie nur Anwendung zu filtern sind in meinem apps Menü existieren.

zum Beispiel: Ich brauchte Album Kamera Facebook bekommen ... und kein Devicemonitor, Eingabegeräte, Memoire

apps

Dank

Antwort

0

Hier ist die Antwort auf meine Frage :)

können wir Holen Sie sich alle Anwendungen von getLaunchIntentForPackage, die eine gute Absicht zum Starten einer Aktivität in einem Paket zurückgeben.

if (mContext.getPackageManager(). GetLaunchIntentForPackage (p.packageName)! = Null)

Dank