2014-01-31 4 views
0

Я хочу знать, установлен ли список приложений и лог-код печати. Я написал некоторый код ведьма может напечатать список установленных приложений это мой кодAndroid установленное приложение в logcat

public void getInstalledApps() { 
    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) != true) { 
      appName = packInfo.applicationInfo.loadLabel(
        getPackageManager()).toString(); 
      Log.d("install ", appName); 
      installedapps = appName; 
     } 

    } 
    Toast.makeText(getApplicationContext(), installedapps, Toast.LENGTH_LONG).show(); 
} 

положить на сообщение тоста, показывая только на установленном приложении. В чем проблема? Если кто-нибудь знает решение, пожалуйста, помогите мне. Я хочу присвоить AppName в общедоступной строке installedapps

+0

Согласно вашему коду, Toast всегда будет показывать имя последнего приложения. –

+0

По соглашению имена переменных в Java начинаются с нижнего регистра. Добро пожаловать. – midhunhk

+1

Также как об этом методе возвращается значение String вместо установки глобальной переменной? – midhunhk

ответ

0

Что происходит, каждый раз, когда вы назначаете имя приложения переменной «installedapps», по существу переписывая более раннее значение. То, что вы закончите, - это последнее значение имени приложения из цикла.

Как насчет пробовать приведенный ниже код. У меня есть только дополнительный код, который вы написали.

getInstalledApps(){ 
    StringBuilder sb = new StringBuilder(); 
    // your loop 
    // your condition 
    sb.append(appName).append(" # "); 
    // end condition 
    // end loop 
    installedapps = sb.toString(); 
    Toast.makeText(.., sb.toString(), 1000); 
} 

Вы также можете попробовать installedapps = installedapps + appName, но это неправильный подход. Вы должны использовать подход StringBuilder.

0

Каждый раз в течение цикла вы назначаете installedapps = AppName;

Поэтому, когда петля завершена, installedapps будет равен последнему приложению.

Попробуйте вместо

public void getInstalledApps() { 
    List<PackageInfo> PackList = getPackageManager().getInstalledPackages(0); 

    StringBuilder sb = new StringBuilder(); 

    for (int i = 0; i < PackList.size(); i++) { 

     PackageInfo PackInfo = PackList.get(i); 

     if (((PackInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) != true) { 
      AppName = PackInfo.applicationInfo.loadLabel(
        getPackageManager()).toString(); 
      Log.d("install ", AppName); 
      sb.append(AppName + "\"); 
     } 

    } 
    Toast.makeText(getApplicationContext(), sb.toString(), Toast.LENGTH_LONG).show(); 

} 

Если вы не понимаете StringBuilder, пожалуйста Google.

+0

Благодарю вас, я узнаю о StringBuilder спасибо – user3233500

Смежные вопросы