1

最近、トランスフォーマーtf101のストックAndroid4.1にアップグレードしました。私のアプリでは、デバイスに接続されているUSBカメラにrootアクセスする必要があります。今まで、私は次のコードでこれを行ってきました:

        Runtime.getRuntime().exec("su");
        DataOutputStream oOutSream = new DataOutputStream( process.getOutputStream());
        oOutSream.writeBytes( "chmod -R 777 /dev/bus/usb/* \n" );
        oOutSream.flush();
        oOutSream.writeBytes("exit\n");
        oOutSream.flush();

私は知っています、chmod 777は良い考えではありませんが、私は今のところ他の解決策を見つけていません。さて、4.1にアップグレードした後、これはもう機能していません。SuperSUは、アプリがrootアクセスを要求したことを通知するメッセージボックスを表示しますが、機能しません。奇妙なことに、PCからadbシェルを開いてそれらのコマンドを入力すると、問題なく動作します。

PCによるsuアクセスを許可した場合、アプリは正しく機能しますが、ランダムなトーストが表示され、「ルートアクセスが許可されました」または「ルートアクセスが拒否されました」と通知されます。SuperSUのバグでしょうか?

助けてくれてありがとう!

4

1 に答える 1

1

より良いアイデアは、アクセスしたい USB デバイスのアクセス許可を確認することです。

たとえばls、電話で次のように使用します。

$ ls -l /dev/bus/usb/001/
crw-rw---- system   usb      189,   1 2012-09-15 19:18 002
crw-rw---- system   usb      189,   0 2012-09-15 19:18 001

私はここで間違っているかもしれませんが、すべての Android バージョンで、usb グループにはrwすべての USB デバイスに対する権限があると思います。あなたがしたいことは、usbグループIDとしてアプリケーションを起動することです。

たとえば、 を使用suしてプロセスをルートに昇格させてから、 を使用してグループ ID を設定することで、これを行うことができますsetgid。その後、chmodいじらずにUSBデバイスに書き込むことができますが、これは本当に良くありません。

編集:また、グループIDの設定が完了したら、を使用してルート権限を削除することを忘れないでくださいsetuid(whateverAppUID)!

于 2012-09-25T18:22:24.723 に答える