2017-03-21 6 views
-4

Ich kann meinen Code bekommen, um alle installierten Pakete zu bekommen und sie in einem Toast anzuzeigen. Das Problem ist, ich möchte, dass mein Code nur den Paketnamen anzeigt, der eine Zeichenfolge enthält. Wie mache ich das?Wie installiert man Pakete in Android?

ActivityManager actvityManager = (ActivityManager) 
    getApplicationContext().getSystemService(getApplicationContext().ACTIVITY_SERVICE); 
List<RunningAppProcessInfo> procInfos = actvityManager.getRunningAppProcesses(); 

for(int pnum = 0; pnum < procInfos.size(); pnum++) 
{ 
if((procInfos.get(pnum)).processName.contains("android")|| (procInfos.get(pnum)).processName.contains("system")||(procInfos.get(pnum)).processName.contains("huawei")||(procInfos.get(pnum)).processName.contains("adil")) 
{ 
     //Toast.makeText(getApplicationContext(), "system apps", Toast.LENGTH_SHORT).show(); 
} 
else 
{ 
    actvityManager.killBackgroundProcesses(procInfos.get(pnum).processName); 
    Toast.makeText(getApplicationContext(), "killed "+procInfos.get(pnum).processName, Toast.LENGTH_SHORT).show(); 

} 
} 
+1

"Ich kann meinen Code bekommen, um alle installierten Pakete zu erhalten und sie in einem Toast anzuzeigen" - Ihr Code hat damit nichts zu tun. – CommonsWare

+0

Es sieht so aus, als würden Sie laufende Prozesse ausführen, nicht installierte Pakete. –

+0

Oh mein Schlechter, lass mich update – user352806

Antwort

0

Hier ist der Code, u alle installierten Aktivitäten/Anwendungen auf Android geben wird:

Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); 
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER); 
List<ResolveInfo> pkgAppsList = context.getPackageManager().queryIntentActivities(mainIntent, 0); 

Abrufen der Liste der installierten Nicht-System-Apps:

public static void installedApps() 
{ 
List<PackageInfo> packList = getPackageManager().getInstalledPackages(0); 
for (int i=0; i < packList.size(); i++) 
{ 
    PackageInfo packInfo = packList.get(i); 
    if ( (packInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) 
    { 
     String appName = packInfo.applicationInfo.loadLabel(getPackageManager()).toString(); 
     Log.e("App № " + Integer.toString(i), appName); 
    } 
} } 

oder Sie können versuchen Sie ein gut strukturiertes Beispiel:

class PInfo { 
private String appname = ""; 
private String pname = ""; 
private String versionName = ""; 
private int versionCode = 0; 
private Drawable icon; 
private void prettyPrint() { 
    Log.v(appname + "\t" + pname + "\t" + versionName + "\t" + versionCode); 
} } 

private ArrayList<PInfo> getPackages() { 
ArrayList<PInfo> apps = getInstalledApps(false); 
final int max = apps.size(); 
for (int i=0; i<max; i++) { 
    apps.get(i).prettyPrint(); 
} 
return apps; } 

private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) { 
ArrayList<PInfo> res = new ArrayList<PInfo>();   
List<PackageInfo> packs = getPackageManager().getInstalledPackages(0); 
for(int i=0;i<packs.size();i++) { 
    PackageInfo p = packs.get(i); 
    if ((!getSysPackages) && (p.versionName == null)) { 
     continue ; 
    } 
    PInfo newInfo = new PInfo(); 
    newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString(); 
    newInfo.pname = p.packageName; 
    newInfo.versionName = p.versionName; 
    newInfo.versionCode = p.versionCode; 
    newInfo.icon = p.applicationInfo.loadIcon(getPackageManager()); 
    res.add(newInfo); 
    } 
return res; } 
+0

Hast du wirklich die Frage gelesen, bevor du das postest? Nein, hast du nicht. – user352806

Verwandte Themen