是否可以从应用程序执行ADB shell命令?

时间:2015-02-28 18:42:12

标签: android shell adb screen-orientation

我有Android PC root (开箱即用)连接到外接显示器(HDMI和USB),即使我的应用指定了肖像,也始终以横向显示在Manifest的活动声明中:

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]。这意味着命令正常终止。

Android PC上只有一个USB端口和一个微型USB端口(仅供电/无数据)。启用调试后,我无法在DDMS中枚举设备,也无法从BASH将我的开发PC连接到Android PC上的micro USB端口执行shell命令。所以,我试图通过我的Android应用程序执行此操作。

请告知

1 个答案:

答案 0 :(得分:2)

在设备上执行命令时,不需要在adb shell前面添加命令,您的java代码在设备上运行,所以只需将其关闭并运行以下命令

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

只需快速说明,当您这样做时,您告诉Android设备在通过ADB连接到它的另一个Android设备上执行此命令