¿Cómo mover aplicaciones spcific a / de la tarjeta sd usando ADB?

Fondo

Es posible configurar la instalación predeterminada en la tarjeta SD usando (basado en este enlace ):

para pre- API14:

adb shell pm setInstallLocation 2 

para API 14 y superiores:

 adb shell pm set-install-location 2 (Android 4.x) 

El problema

Esto sólo funciona para las aplicaciones recién instaladas (o simplemente ir manualmente sobre cada una de ellas y establecer allí), pero me gustaría saber cómo volver a instalar una aplicación ya instalada en la tarjeta SD (y también de nuevo a la memoria interna ).

Lo que he intentado

Traté de leer los comandos disponibles a través de ADB, y trató de ejecutar el siguiente comando:

 adb shell pm install -s -r -i com.example.test 

Pero no funcionó

La pregunta

Supongamos que una aplicación ya está instalada en el almacenamiento interno (o en la tarjeta SD), ¿cómo puedo usar ADB para volver a instalarla en la tarjeta SD (o en la interna)?

Aparentemente, es necesario proporcionar la ubicación del APK en lugar del nombre del paquete.

Después trabajé en mi final para VLC que instalé desde Play Store y originalmente estaba en almacenamiento interno:

 $ adb shell pm install -s -r /data/app/org.videolan.vlc.betav7neon-1.apk pkg: /data/app/org.videolan.vlc.betav7neon-1.apk Success $ 

Y volviendo al almacenamiento interno:

 $ adb shell pm install -f -r /mnt/asec/org.videolan.vlc.betav7neon-1/pkg.apk pkg: /mnt/asec/org.videolan.vlc.betav7neon-1/pkg.apk Success $ 

Actualización 1

A continuación se muestran los comandos respectivos con -i: specify the installer package name opción del -i: specify the installer package name .

Mover a la tarjeta SD:

 $ adb shell pm install -i "com.android.vending" -s -r /data/app/org.videolan.vlc.betav7neon-1.apk pkg: /data/app/org.videolan.vlc.betav7neon-1.apk Success 

Mover a almacenamiento interno:

 $ adb shell pm install -i "com.android.vending" -f -r /mnt/asec/org.videolan.vlc.betav7neon-1/pkg.apk pkg: /mnt/asec/org.videolan.vlc.betav7neon-1/pkg.apk Success 

Actualización 2

El uso de -i es opcional, pero si no se utiliza la información del instalador se pierde durante el movimiento:

 $ adb shell pm list packages -3 -i package:org.videolan.vlc.betav7neon installer=com.android.vending $ adb shell pm install -s -r /data/app/org.videolan.vlc.betav7neon-1.apk pkg: /data/app/org.videolan.vlc.betav7neon-1.apk Success $ adb shell pm list packages -3 -i package:org.videolan.vlc.betav7neon installer=null 

Espero que esto ayude.

  • ¿Qué es Context.getExternalMediaDir ()?
  • Android: Copiar RawFile a Sdcard (video mp4)
  • Tratando de copiar SQLite DB desde datos a tarjeta SD
  • Uso de DownloadManager para descargar en una nueva carpeta en el almacenamiento de teléfonos
  • Acceso al almacenamiento en el rincón
  • ¿Por qué puedo escribir en "mnt / sdcard" y no en "mnt / extsd"?
  • ¿Por qué AssetManger.list () es tan lento?
  • No se pueden escribir archivos en sdcard android
  • No se puede ver un archivo en Windows escrito por una aplicación de Android en sd-card a menos que "Force Close" de la aplicación
  • ¿Cómo eliminar una imagen en miniatura mediante programación de galera después de eliminar una imagen?
  • Cómo reproducir archivos mp3 de la tarjeta SD interna y externa en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.