在Android设备上找出包版本

时间:2012-03-09 23:57:51

标签: android android-sdk-tools

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

目前我一直在这样做:

一个。该版本在apk中 湾apk通常位于/ system / app
中 C。可以在/data/system/packages.xml中找到apk名称的包名 d。棘手的部分是应用程序NAME通常位于apk文件中的字符串资源中 - 如strings.xml(默认名称)
即这也可以使用API​​的PackageManager系列

在android SDK中完成

这非常耗时,我正在为许多很多设备做这件事。我只是觉得必须有一个更简单的方式,然后我会如何处理它。

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

2 个答案:

答案 0 :(得分:0)

您的唯一有效方法是:

  

这也可以使用API​​的PackageManager系列

在android SDK中完成

其余的......我不知道为什么你认为它会起作用,更不用说可靠了。是什么让你认为人们将使用字符串资源,考虑到versionCode特别是永远不必翻译?

  

这非常耗时

调用PackageManager,迭代已安装的应用程序以及检索版本信息的代码应该花费一些毫秒。

答案 1 :(得分: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());
}
}