Java 経由で Android からシェル コマンドを実行
この問い合わせでは、ユーザーは Java アプリケーション内から「screenrecord」コマンドを実行しようとしていますAndroid デバイス上で。ただし、ターミナル エミュレータからの正常な実行とは異なり、同じコードは Java からは失敗します。
解決策
この問題は、Java プロセスに与えられた権限が不十分であることが原因で発生します。これを修正するには、まず「su」を実行してスーパーユーザー権限を取得し、次に開始された「su」プロセスの標準入力を通じて「screenrecord」コマンドを中継する必要があります。
次の Java コードが解決策を提供します。
try { Process su = Runtime.getRuntime().exec("su"); DataOutputStream outputStream = new DataOutputStream(su.getOutputStream()); outputStream.writeBytes("screenrecord --time-limit 10 /sdcard/MyVideo.mp4\n"); outputStream.flush(); outputStream.writeBytes("exit\n"); outputStream.flush(); su.waitFor(); } catch (IOException | InterruptedException e) { throw new Exception(e); }
この変更されたコードは、「su」プロセスの標準入力を取得し、「screenrecord」コマンドを送信し、「su」プロセスを終了して、必要な昇格された特権でコマンドを実行できるようにします。
以上がAndroid で Java から「screenrecord」などのシェル コマンドを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。