Tło: Mam urządzenie Android z pamięcią USB (np. RikoMagic), które najczęściej uruchamiam w trybie „bezgłowym”. Między innymi już wymyśliłem, jak to wyłączyć za pomocą kombinacji adb i wewnętrznego polecenia „am”:
adb shell am start -n android/com.android.server.ShutdownActivity
Próbuję teraz dowiedzieć się, jak włączyć i wyłączyć obsługę pamięci masowej USB. Mam tak daleko, że okno aktywności pamięci USB wyskakuje za pomocą następującego polecenia:
adb shell am start -n com.android.systemui/.usb.UsbStorageActivity
Niestety nie byłem w stanie dowiedzieć się, jak wysłać równoważną „intencję”, aby faktycznie „odmontować” lub „udostępnić” udostępniony wolumin (lub „zamontować” lub „udostępnić” go w tym przypadku). Następujące polecenie nic nie robi:
adb shell am start -n com.android.systemui/.usb.UsbStorageActivity -a android.intent.action.MEDIA_UNSHARED file:///mnt/sdcard
Co ja robię źle? Jaka jest magiczna inkantacja do montowania / odmontowywania wewnętrznej pamięci urządzenia z Androidem?
Uwaga 1: Wiem, że istnieje oczywiste polecenie Linuxa „mount” / „umount”. Jednak samo zamontowanie lub odmontowanie woluminu nie uruchomi funkcji systemowych niezbędnych do na przykład ponownego uruchomienia lub zatrzymania aplikacji przeniesionych na kartę SD. „Umount” prawdopodobnie i tak się nie powiedzie, gdy aplikacja na karcie SD jest nadal aktywna.
Uwaga 2: Najwyraźniej istnieje polecenie „setprop”, które może włączyć / wyłączyć obsługę pamięci masowej USB do momentu następnego uruchomienia. Ponownie, to podejście wszystko albo nic nie jest tym, czego szukam, ale możliwością włączania i wyłączania pamięci masowej USB podczas jednej sesji, co można zrobić za pomocą interfejsu dotykowego.
adb shell setprop sys.usb.config mass_storage