私は UsbDevice へのアクセスを許可し、彼のデバイス名 ( /dev/bus/usb/002/002
) を取得し、それを実行されたプロセスに渡して USB デバイスを操作しました (詳細はavrdudeを参照)。
Process process = Runtime.getRuntime().exec(commandArray);
「権限が拒否されました」というエラーが表示されます。
W/System.err( 9368): avrdude: ser_open(): can't open device "/dev/bus/usb/002/002": Permission denied
W/System.err( 9368): ioctl("TIOCMGET"): Invalid argument
Avrdude はアプリのサンドボックス ( /data/data/%package%
) 内にあるため、avrdude を実行するためだけに root 化する必要はありません (確かに)。UsbDevice Android アプリ プロセスへのアクセスを許可し、すべての子プロセス (avrdude) が対応する USB デバイス ファイルにアクセスできると信じています。
何かご意見は?ルート化は望ましくありません。