0

Android でコマンドを実行して、出力をシリアル ポートに送信しようとしています。adb shell を使用して次のように入力した場合:

busybox echo -ne 'testMessage' > /dev/ttymxc1

ボードのシリアル ポートに接続された端末で「testMessage」を受け取ります。

次に、Android アプリで次のコマンドを実行します。

    try
    {
        Runtime.getRuntime().exec("busybox echo -ne 'testMessage' > /dev/ttymxc1");
    } catch (IOException e)
    {
        e.printStackTrace();
    }

ただし、今回は出力もエラーもありません。単純に、ビジーボックスなしで実行してみました

echo -ne 'testMessage' > /dev/ttymxc1

ただし、これにより、null 作業ディレクトリ、null 環境エラーが発生します。ただし、これはadbシェルで機能します...

アプリでコマンドを実行した場合の出力が、adb シェルでコマンドを実行した場合と同じにならない理由はありますか? これを機能させる正しい方法はありますか?

編集: root ユーザーとして実行していることに注意してください。また、このコマンドの前に次を実行し、スーパー ユーザー権限が付与されていることを確認しました。

    try
    {
        process = Runtime.getRuntime().exec("su");
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
4

1 に答える 1

0

非同期プロセスである限り、コマンドの結果を待つべきだと思います。コードでは、コマンドは処理中ですが、コマンドから結果を得るのに十分な待機がないため、エラー/結果は得られません。

これを試して :

try
{
    process = Runtime.getRuntime().exec(YOUR COMMAND HERE);
    process.waitFor(); 
}
catch (IOException e)
{
    e.printStackTrace();
}
于 2015-10-21T15:44:04.250 に答える