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?
- Lea el nombre del paquete de un APK Android
- ¿Por qué no se actualizan mis archivos de activos?
- ¿Puedo ejecutar un archivo APK en el emulador de Android?
- WebView.setWebContentsDebuggingEnabled (false) pero soy capaz de depurar el código después de instalar el APK firmado
- Ejecutar archivo APK en Eclipse
- ¿Cómo instalar varias aplicaciones de Android (desde archivos apk) en el dispositivo?
- Error de instalación de ADB con INSTALL_FAILED_TEST_ONLY
- Generar APK firmado en Android Studio
- Android install apk programmatically
- ¿Es incluso posible modificar .apk, agregando la clase adicional a .dex y re-embalar con manifest.xml modificado?
- Instalación silenciosa de android apk
- Integración de otra aplicación android dentro de mi propia aplicación
- Habilitar a terceros independientes para localizar aplicaciones de Android; Datos de localización fuera del APK de la aplicación
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.
- ¿Cómo puedo crear grupos de ParseUsers usando Parse.com?
- Encabezado de cookie no válido: no se puede analizar el atributo expires cuando el atributo expires está vacío