¿Encontrar nombres de paquetes en línea?

En mi nueva aplicación, voy a iniciar otras aplicaciones desde mi propia aplicación. Pero encontrar nombres de paquetes para todas las aplicaciones es bastante difícil. Me las arreglé para crear una aplicación que encuentre el nombre del paquete en todas mis aplicaciones instaladas actualmente, pero sería mucho más fácil con algún tipo de base de datos en línea o sabiendo dónde buscar en el mercado.

¿Hay alguna base de datos de nombres de paquetes en línea, o tengo que encontrarlos por mí mismo usando mi "aplicación de nombre de paquete"?

preguntado el 11 de junio de 12 a las 19:06

1 Respuestas

Si va a obtener información de otras aplicaciones, puede usar el código a continuación. El código puede contener algunos pequeños errores, pero le dará un buen punto de partida.

class PInfo {
private String appname = "";
private String pname = "";
private String versionName = "";
private int versionCode = 0;
private Drawable icon;
private void prettyPrint() {
    Log.v(appname + "\t" + pname + "\t" + versionName + "\t" + versionCode);
}
}

private ArrayList<PInfo> getPackages() {
ArrayList<PInfo> apps = getInstalledApps(false); /* false = no system packages */
final int max = apps.size();
for (int i=0; i<max; i++) {
    apps.get(i).prettyPrint();
}
return apps;
}

private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) {
ArrayList<PInfo> res = new ArrayList<PInfo>();        
List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);
for(int i=0;i<packs.size();i++) {
    PackageInfo p = packs.get(i);
    if ((!getSysPackages) && (p.versionName == null)) {
        continue ;
    }
    PInfo newInfo = new PInfo();
    newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();
    newInfo.pname = p.packageName;
    newInfo.versionName = p.versionName;
    newInfo.versionCode = p.versionCode;
    newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());
    res.add(newInfo);
}
return res; 
}

Si necesita obtener acceso a las aplicaciones del sistema, puede intentar usar el siguiente código:

((packs.get(i).applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1) { continue; }

¿Por qué desea utilizar una base de datos en línea para recuperar el nombre del paquete? Dígame por qué desea utilizar una base de datos en línea para que pueda publicarle más información. Si observamos la URL de Android Market (Google Play), podemos ver que contiene el nombre del paquete en su URL para la aplicación. Ejemplo: https://play.google.com/store/apps/details?id=com.speaker.app El id= es el nombre del paquete. Esto puede ayudarlo a comprender dónde mirar el mercado como lo deseaba.

Si realmente necesita tener una base de datos en línea: recomendaría usar algún tipo de sql y solicitar "información" de su aplicación. Esto requiere algunos conocimientos de programación back-end del servidor.

Respondido el 11 de junio de 12 a las 20:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.