ホームページ  >  記事  >  Java  >  Android アプリケーションで昇格された特権を使用してシェル コマンドを実行するにはどうすればよいですか?

Android アプリケーションで昇格された特権を使用してシェル コマンドを実行するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-10 06:40:03474ブラウズ

How to Run Shell Commands with Elevated Privileges in Android Applications?

Android アプリケーションからのシェル コマンドの実行

Android アプリケーション内からシェル コマンドを実行しようとする場合、次の制限を考慮することが重要です。オペレーティングシステム。昇格された権限を取得するには、一時的な root アクセスを許可するためのより安全なメカニズムを提供する「su」ユーティリティを使用することをお勧めします。

標準の Android ターミナルでは、「su」を使用してコマンドを実行するには、次のように入力します。 「su」の後に、「screenrecord --time-limit 10 /sdcard/MyVideo.mp4」などの目的のコマンドを続けます。ただし、これと同じアクションを Java アプリケーション内から実行しようとすると、問題が発生する可能性があります。

「su」とコマンドを同時に実行しようとすると、潜在的な問題が 1 つ発生します。権限を適切に昇格するには、最初に「su」プロセスを起動し、続いて標準入力ストリームを介してコマンドを入力として提供する必要があります。

これを実現するには、コードの修正バージョンは次のとおりです。

try {
    Process su = Runtime.getRuntime().exec("su");
    DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());

    // Provide the command through the standard input stream
    outputStream.writeBytes("screenrecord --time-limit 10 /sdcard/MyVideo.mp4\n");
    outputStream.flush();

    // Terminate the "su" process
    outputStream.writeBytes("exit\n");
    outputStream.flush();
    su.waitFor();
} catch (IOException | InterruptedException e) {
    throw new Exception(e);
}

このようにコードを変更すると、「su」ユーティリティを使用して Android アプリケーションからシェル コマンドを正常に実行できるようになり、画面記録などのタスクに必要な昇格された権限を取得できるようになります。

以上がAndroid アプリケーションで昇格された特権を使用してシェル コマンドを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。