计算Android设备上的软件包版本

计算Android设备上的软件包版本,android,android-sdk-tools,Android,Android Sdk Tools,我正试图找到一种更简单、更自动化的方式来查看当前安装在Android设备上的apk的所有版本号,包括用户安装的版本号和预装的版本号 目前我一直在这样做: a。版本在apk中 Bapk通常位于/system/app中 Capk name的包名可以在/data/system/packages.xml中找到 D棘手的部分是,应用程序名称通常位于apk文件中的字符串资源中,如strings.xml默认名称 E这也可以使用API的PackageManager系列在android SDK中完成 这是非常耗时

我正试图找到一种更简单、更自动化的方式来查看当前安装在Android设备上的apk的所有版本号,包括用户安装的版本号和预装的版本号

目前我一直在这样做:

a。版本在apk中 Bapk通常位于/system/app中 Capk name的包名可以在/data/system/packages.xml中找到 D棘手的部分是,应用程序名称通常位于apk文件中的字符串资源中,如strings.xml默认名称 E这也可以使用API的PackageManager系列在android SDK中完成

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


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

您唯一有效的方法是:

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

其余的。。。我不知道你为什么认为它能工作,更不用说可靠地工作了。考虑到versionCode尤其不需要翻译,您怎么会认为人们会使用字符串资源来实现这些功能

这非常耗时


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

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

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());
}
}

对于版本号,您是指应用程序清单中的版本代码和版本名称?