Instalar la aplicación de forma programática desde la fuente de Android
Utilizo el código siguiente para instalar una aplicación, de mi uso que he puesto dentro del código de fuente androide.
He compilado y construido un emulador, puedo ver mi aplicación que trabaja perfecta dentro del emulador construido de la fuente de Androide.
- Instalar a través de OTA, la aplicación empieza desde splash cuando se minimiza y vuelve a entrar
- Instalar aplicaciones en silencio, con el permiso INSTALL_PACKAGES concedido
- Fallo del protocolo adb utilizando install and push
- ¿Hay alguna forma de ignorar INSTALL_FAILED_VERSION_DOWNGRADE en la instalación de la aplicación con Android Debug Bridge?
- Error instalando java en ubuntu 10 64bit
En un punto concreto de mi aplicación, intento instalar otra aplicación desde mi aplicación. La ruta APK de la aplicación que intento instalar es:
/data/data/com.games.golf/cache/MyGames/Golf.apk
A continuación se muestra el código que utilizo para instalar la aplicación en el camino anterior desde mi aplicación:
private void InstallApplicaiton(String url) { PackageParser.Package mPackage = PackageUtil.getPackageInfo(Uri.parse(url)); installingList.addView(getProgressView(mPackage,url)); int installFlags = 0; PackageManager pm = getPackageManager(); try { PackageInfo pi = pm.getPackageInfo(mPackage.packageName, PackageManager.GET_UNINSTALLED_PACKAGES); if(pi != null) { System.out.println("Inside pi if not null"); installFlags |= PackageManager.INSTALL_REPLACE_EXISTING; } } catch (NameNotFoundException e) { e.printStackTrace(); } String installerPackageName = getIntent().getStringExtra( Intent.EXTRA_INSTALLER_PACKAGE_NAME); System.out.println("installerPackageName:"+installerPackageName); PackageInstallObserver observer = new PackageInstallObserver(); pm.installPackage(Uri.parse(url), observer, installFlags, installerPackageName); } private Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case INSTALL_COMPLETE: System.out.println("package installed"); break; } } }; class PackageInstallObserver extends IPackageInstallObserver.Stub { public void packageInstalled(String packageName, int returnCode) { Message msg = mHandler.obtainMessage(INSTALL_COMPLETE); msg.arg1 = returnCode; mHandler.sendMessage(msg); } }
Recibo mensaje SOP dentro del controlador de PackageInstallObserver
que el paquete está instalado. Pero no puedo ver la aplicación instalada en el lanzador.
Soy consciente del hecho de que, las aplicaciones de terceros no pueden instalar / desinstalar APKs mediante programación. Por esta razón, he compilado y construido un emulador incluyendo mi aplicación, para que pueda instalar otras aplicaciones de mi aplicación. Pero aquí también cuando me quedo perplejo con el código de arriba, no tengo ni idea de la razón.
He utilizado el mismo código que android utiliza para instalar paquetes, pero por qué el código anterior no funciona y el paquete no se está instalando es lo que no soy capaz de entender.
El único problema que pude notar aquí es que String installerPackageName
siempre es nulo.
Cualquier ayuda a este respecto que me ayudaría a resolver este problema, de modo que el paquete se instala desde mi aplicación, sería muy apreciado.
Editar
El siguiente es el registro. ¿Es porque eso, intento instalar esto desde el emulador y eso también desde la carpeta caché – /data/data/com.games.golf/cache
. ¿Tiene algo que ver con el permiso para acceder a esta carpeta?
05-29 19:31:57.237: W/asset(7490): Asset path /data/data/com.games.golf/cache/MyGames/Golf.apk is neither a directory nor file (type=0). 05-29 19:31:57.237: W/DefContainer(7490): Failed to parse package 05-29 19:31:57.237: W/ActivityManager(79): No content provider found for permission revoke: /data/data/com.games.golf/cache/MyGames/Golf.apk 05-29 19:31:57.297: I/ActivityManager(79): Displayed com.games.golf/.screens.PackageInstaller: +448ms 05-29 19:31:57.607: D/dalvikvm(79): GC_EXPLICIT freed 71K, 11% free 8410K/9415K, paused 4ms+7ms
- Instalar / desinstalar APKs de forma programática (PackageManager vs Intents)
- Error en la instalación del SDK de Android
- Instalar APK de forma programática en android
- Problema al instalar el controlador USB de Android en Galaxy SII
- ¿Por qué falla Adb con el error ?
- Actividad que solo se inicia una vez después de una nueva instalación?
- Android APK instala varios iconos / actividades?
- Cómo configurar Android sdk desde la línea de comandos en servidor sin cabeza?
- Enviar correo electrónico automáticamente desde la aplicación de Android a través de Exchange Server
- Mostrar el calendario en la vista de mes con la intención