1

最初に私の状況を紹介したいと思います。私は を使用してさまざまなシェル コマンドを渡すカーネル調整ツールを作成しています。これRuntime.getRuntime().exec(...)はうまく機能しますが、問題は、su を含むシェル コマンドを実行するたびに su パーミッションが要求されることです。

アプリが一度だけ許可を求めてから、su を再度要求せずにすべてのコマンドを実行するようにします。現在、私のアプリケーションには su コマンドを含む約 30 行あるため、すべてを機能させるには、アプリ ユーザーが su アクセスを 30 回許可する必要があります。

4

2 に答える 2

2

うまくいく可能性のあるアプローチの1つは、suを使用してシェルを実行し、さまざまなコマンドを、うまくいけば結果として得られるルートシェルプロセスのstdinにパイプすることです。これは、suが1回だけ使用されることを意味します。

そのためのコードは、suコマンドラインで渡すことができない引数を使用してコマンドを実行したいというコンテキストで何度も取り上げられているため、代わりに結果のプロセスにパイプする必要があります。

于 2012-06-24T15:03:54.513 に答える
0

これを解決するには、非同期タスクのルート呼び出しに同じインターフェイスを使用しました。最初は、フラグメントで必要に応じてメソッドを個別に使用していたため、アクセス許可が何度も要求されました。次に、それを 1 つの標準的な exec メソッドに変更し、これを使用して毎回システム コールを作成します。エラーを修正しました。

于 2016-02-14T13:58:20.883 に答える