2014-03-07 30 views
1

我必须执行使用调用Runtime.getRuntime亚行命令()前高管:如何使用Runtime.getRuntime().exec(cmd)分隔长的命令; 。

sendevent /dev/input/event2 3 57 0;sendevent /dev/input/event2 3 53 325;sendevent /dev/input/event2 3 54 891;sendevent /dev/input/event2 3 58 71;sendevent /dev/input/event2 3 48 71;sendevent /dev/input/event2 0 0 0;sendevent /dev/input/event2 3 57 4294967295;sendevent /dev/input/event2 0 0 0;

我送这个字符串:

String cmd = "sendevent /dev/input/event2 3 57 0;" + 
        "sendevent /dev/input/event2 3 53 325;" + 
        "sendevent /dev/input/event2 3 54 891;" + 
        "sendevent /dev/input/event2 3 58 71;" + 
        "sendevent /dev/input/event2 3 48 71;" + 
        "sendevent /dev/input/event2 0 0 0;" + 
        "sendevent /dev/input/event2 3 57 4294967295;" + 
        "sendevent /dev/input/event2 0 0 0;"; 
call(cmd); 

在这种通话功能:

private void call(String cmd) { 

    Process ans_call; 
    InputStreamReader cmd_reader; 
    BufferedReader cmd_bufferedReader; 
    String line = null; 
    try { 
    sendMainUIMessage(MSG_KPI_UI_UPDATE_REQUEST, null, cmd); 
    mLogWriter.writeDiagnoseLog(cmd); 
    ans_call = Runtime.getRuntime().exec(cmd); 
    NotifyRunning(ans_call); 
    cmd_reader = new InputStreamReader(ans_call.getInputStream()); 
    cmd_bufferedReader = new BufferedReader(cmd_reader); 

    while (((line = cmd_bufferedReader.readLine()) != null)) { 
     sendMainUIMessage(MSG_KPI_UI_UPDATE_REQUEST, null, line + "\n"); 
     mLogWriter.writeDiagnoseLog(line);    
    } //end of while 

    ans_call.waitFor(); 
    NotifyEnd(ans_call); 
    cmd_reader.close(); 
    cmd_bufferedReader.close(); 
    } catch (IOException e) { 
    Log.e(TAG, "Could not write file " + e.getMessage()); 
    } catch (InterruptedException e) { 
    Log.e(TAG, "Ping test Fail: InterruptedException"); 
    } //end of try 

} 

该代码运行良好,但我没有看到该命令得到执行。有人能指出这个问题吗?

+0

始终包含你正在使用的主要语言的标签。另外,将指针悬停在标签上方以查看定义。 'cmd'是一个Windows命令shell,并且与此问题无关。 –

+0

adb是一个接口。只有在使用通过adb接口提供的半提升权限的情况下才起作用,而不是在设备上运行的第三方应用程序的高度受限权限时,您想要在此处运行的命令是“adb命令”。要从应用程序运行它,您需要使用特权升级攻击,例如修改后的“su”垫片。 –

回答

0

您的应用程序没有权限写入/dev/input/event2

相关问题