Выяснение версий пакетов на устройстве Android - PullRequest
0 голосов
/ 10 марта 2012

Я пытаюсь выяснить более простой (более автоматизированный способ), чтобы увидеть все номера версий apk (как установленных, так и предварительно установленных), которые в настоящее время установлены на устройстве Android.

В настоящее время я собираюсь об этом так:

а. Версия в апк
б. АПК обычно находится в / system / app
с. Имя пакета для имени apk можно найти в /data/system/packages.xml
д. Сложность в том, что имя приложения обычно находится в строковом ресурсе в файле apk, например strings.xml (имя по умолчанию)
е. Это также можно сделать из Android SDK, используя семейство PackageManager API

Это очень много времени, и я делаю это для многих, многих, многих устройств. Я просто думаю, что должен быть более простой способ, чем я.

Спасибо за помощь, как всегда, очень признателен.

Ответы [ 2 ]

0 голосов
/ 13 марта 2012

Я сделал это, оооооо !!!..... Я отправляю этот код кому-либо еще, кому нужно найти имена пакетов и версий всех устройств на устройстве.

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());
}
}
0 голосов
/ 10 марта 2012

Единственный верный подход:

Это также можно сделать из Android SDK, используя семейство PackageManager API

Остальное ... Я понятия не имею, почему вы думаете, что это будет работать, не говоря уже о том, чтобы делать это надежно. С чего вы взяли, что люди будут использовать строковые ресурсы для них, учитывая, что versionCode в частности никогда не нужно переводить?

Это очень много времени

Код для вызова PackageManager, итерации по установленным приложениям и получения информации о версии должен занимать несколько миллисекунд.

...