Pregunta

Estoy tratando de descubrir una forma más fácil (más automatizada) para ver todos los números de versión de los APK (tanto usuario instalados como preinstalados) que están instalados actualmente en un dispositivo Android.

Actualmente lo he estado yendo sobre esto:

a.La versión está en el APK
B.El APK es típicamente en / System / Aplicación
C.El nombre del paquete al nombre APK se puede encontrar en /data/system/packages.xml
D.La parte complicada es que el nombre de la aplicación generalmente está en un recurso de cadena en el archivo APK, como STRINGS.xml (nombre predeterminado)
mi.Esto también se puede hacer desde dentro del SDK de Android utilizando la familia Packagemanager de la sociedad de la API

Esto es extremadamente consumido y estoy haciendo esto para muchos, muchos, muchos dispositivos.Solo estoy pensando que tiene que haber una manera más fácil, entonces, lo que lo voy.

Gracias por la ayuda, como siempre, es muy apreciado.

¿Fue útil?

Solución 2

I did it, whoooo!!! ..... I am posting this code to anyone else that need to find the packagenames and version names of everything on the device.

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

Otros consejos

The only one of your approaches that is valid is:

This can also be done from within the android SDK using the PackageManager family of API’s

The rest... I have no idea why you think it would even work, let alone do so reliably. What makes you think that people will be using string resources for these, considering that versionCode in particular never has to be translated?

This is extremely time consuming

The code to call PackageManager, iterate over the installed applications, and retrieve the version information should take a handful of milliseconds.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top