0

我试图找出一种更简单(更自动化的方式)来查看当前安装在 Android 设备上的所有 apk 版本号(用户安装和预安装)。

目前我一直在这样做:

一种。该版本在 apk
b 中。apk 通常位于 /system/app
c 中。包名到 apk 名可以在 /data/system/packages.xml
d 中找到。棘手的部分是应用程序名称通常位于 apk 文件中的字符串资源中——例如 strings.xml(默认名称)
e。这也可以使用 API 的 PackageManager 系列在 android SDK 中完成

这是非常耗时的,我为很多很多设备做这个。我只是认为必须有一种更简单的方法,然后我将如何去做。

一如既往地感谢您的帮助,非常感谢。

4

2 回答 2

0

您唯一有效的方法是:

这也可以使用 API 的 PackageManager 系列在 android SDK 中完成

其余的......我不知道你为什么认为它甚至会起作用,更不用说可靠地做到这一点了。是什么让你认为人们会为这些使用字符串资源,versionCode特别是考虑到永远不需要翻译?

这是非常耗时的

调用PackageManager、迭代已安装的应用程序和检索版本信息的代码应该需要几毫秒。

于 2012-03-10T00:27:38.497 回答
0

我做到了,哇!!!.....我将此代码发布给需要查找设备上所有内容的包名称和版本名称的其他任何人。

import java.util.List;
import android.app.Activity;
import android.content.pm.PackageInfo;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.widget.TextView;

public class main extends Activity {

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String bldr = new String();

    List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
    bldr = "Total packages --> " + packs.size() + "\n";

    for(int i=0;i<packs.size();i++){
        PackageInfo p = packs.get(i);
        bldr = bldr + "<" + p.packageName + ">" + "\t" + "v" + p.versionName + "\n";
    }

    TextView tv = new TextView(this);
    tv.setMaxLines(packs.size() + 2);
    tv.setMovementMethod(new ScrollingMovementMethod());
    tv.setText(bldr);
    setContentView(tv);
    Log.w("com.tmobile.pr.showAllPackages", bldr.toString());
}
}
于 2012-03-13T19:18:33.373 回答