Android show在logcat中安装了app

时间:2014-01-31 13:50:11

标签: java 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();
}

只显示已安装的应用上的toast消息。有什么问题?如果有人知道解决方案,请帮助我。我想在公共字符串installedapps

中分配AppName

2 个答案:

答案 0 :(得分:0)

发生的事情是,每次将应用名称分配给变量“installedapps”时,基本上都会覆盖之前的值。你将最终得到的是循环中的最后一个appname值。

如何尝试以下代码。我只编写了你所写的代码。

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方法。

答案 1 :(得分: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,请谷歌。