2015-02-28 1 views
3

У меня есть 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.

Пожалуйста посоветуйте

ответ

2

При выполнении команды на устройстве нет никакой необходимости префикс с adb shell, ваш код Java работает на само устройство, так просто бросить его и просто запустить следующую команду,

content insert --uri content://settings/system --bind name:s:user_rotation --bind value:i:0" 

только быстрое примечание, когда вы сделаете это, вы говорите Android устройства для выполнения этой команды на другой андроид устройства, подключенные к нему через АБРЫ

+3

вы правы насчет ADB команды не выполняют вещи локально, но напрямую вызов команды запускает его с идентификатором пользователя вызывающего приложения, что, вероятно, недостаточно для большинства из этих вещей. Вот почему люди, которые делают такие вещи, обычно используют «su' корневую прокладку. –

+0

и я попытался запустить adb-сервер на своем устройстве в течение нескольких дней ... спасибо verry much – wutzebaer

 Смежные вопросы

  • Нет связанных вопросов^_^