У меня есть Android PC с корнем (вне коробки), подключенный к внешнему монитору (HDMI & USB), который всегда отображается в альбомной ориентации, несмотря на то, что мое приложение определяет портрет в объявлении деятельности в манифесте:Возможно ли выполнить команды оболочки ADB из приложения?
android:screenOrientation="portrait"
Я пытаюсь выполнить следующую команду из этого SO post заставить портрет:
proc = Runtime.getRuntime().exec("adb shell content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:0");
int exitVal = proc.waitFor();
Это должно установить экран в портретный, но дисплей всегда остается в ландшафте. Исключения не записываются.
Я также использовал следующие без успеха:
process = Runtime.getRuntime().exec("content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:0");
process = Runtime.getRuntime().exec(new String[]{"su","-c","content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:0"});
В обоих случаях значение выхода является [0]. Это означает, что команда завершена нормально.
На ПК с ПК есть только один порт USB и один порт micro USB (только мощность/нет данных). При включенной отладке я не могу перечислить устройство в DDMS и не выполнять команды оболочки из BASH, подключающие мой dev-компьютер к порту micro USB на Android-ПК. Итак, я пытаюсь сделать это из своего приложения для Android.
Пожалуйста посоветуйте
вы правы насчет ADB команды не выполняют вещи локально, но напрямую вызов команды запускает его с идентификатором пользователя вызывающего приложения, что, вероятно, недостаточно для большинства из этих вещей. Вот почему люди, которые делают такие вещи, обычно используют «su' корневую прокладку. –
и я попытался запустить adb-сервер на своем устройстве в течение нескольких дней ... спасибо verry much – wutzebaer