Android: ¿Cómo obtener el nombre de archivo del instalador mediante programación?

Es posible obtener el nombre de archivo del instalador que se almacena en / sdcard / download /? Quiero obtener de la aplicación, apk nombre de archivo que lo instaló. Hay una manera fácil de hacerlo, especialmente con la aplicación no del mercado?

La mejor manera es definitivamente para incluir la cadena de versión en el manifiesto. Este es realmente el único método confiable (y profesional). Android no almacena el nombre del archivo que contiene el APK en ningún lugar, por lo que no hay forma de que puedas obtenerlo.

Teóricamente, probablemente podrías construir algo usando un FileObserver , que observara la creación de archivos en ciertos directorios y cada vez que se creara un archivo con la extensión .apk , podrías abrir el archivo, extraer el manifiesto, encontrar el nombre del paquete del APK y luego guardarlo Junto con el nombre de archivo en algún almacenamiento persistente. Luego, cuando necesite obtener la información de la versión, puede buscar en el almacenamiento persistente para obtener el nombre de archivo que coincida con el nombre del paquete que necesita.

Por supuesto, esto sólo funcionaría si tu aplicación estuviera instalada en el dispositivo antes de descargar / instalar los demás archivos APK. Esto no funcionaría para averiguar el nombre de archivo de su propia aplicación.

Hmm, no estoy seguro de lo que quiere decir con sdcard o carpeta de descarga, pero usted podría obtener la ruta apk en el directorio de sistema / data:

línea de comando:

 $ adb shell pm list packages | grep mk.trelloapp package:mk.trelloapp $ adb shell pm path mk.trelloapp package:/data/app/mk.trelloapp-1/base.apk 

O de su código de aplicación android: (simplemente ejecute el proceso)

  Process exec = Runtime.getRuntime().exec("pm path mk.trelloapp"); exec.waitFor(); InputStream inputStream = exec.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); StringBuilder builder = new StringBuilder(); String line = null; while( ( line = br.readLine()) != null ) { builder.append(line); } String commandOutput = builder.toString(); 

El código anterior debería simplemente darle String que contiene "package: /data/app/mk.trelloapp-1/base.apk"

Cuando adquiere el directorio path / directorio de datos, puede intentar buscar el mismo archivo (similar) en otros directorios (asumiendo que no se eliminó), ya que el paquete android se copia en el directorio / data durante la instalación.

  • Convertir AndroidManifest.xml en binario
  • Instalar un archivo apk desde el símbolo del sistema?
  • Cómo instalar / reemplazar en Android sin usar Eclipse
  • Google Play: cómo evitar la descarga del gran archivo de expansión APK cuando el usuario instala la APP desde el mercado
  • ¿Por qué instalar Android LatinIME obtiene Fallo?
  • Android build release apk en jenkins, sin guardar mi contraseña en texto plano
  • Instalar apk manualmente en el dispositivo: error 103
  • Amazon Kindle fuego y archivo .apk
  • Instalar la aplicación de forma programática desde la fuente de Android
  • No puede firmar el APK sin firmar
  • Cómo abrir un archivo APK para todas las versiones de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.