0

多くのシステム デバイス ノードにアクセスするアプリケーションを作成しています。デバイス ノードを開くために、ネイティブ メソッドを作成しました。実行しようとすると、アプリケーションへのルート権限がないため、デバイス ノードを開くことができません。私のAndroidアプリケーションにroot権限を与えるように教えてください。デバイスの詳細: Android 2.0.1 - motorola のマイルストーン。

rtc_fd=open("/dev/rtc",0777);
if(rtc_fd == -1) {
    __android_log_write(ANDROID_LOG_ERROR, "","UNABLE TO OPEN THE DEVICE....");
    strcpy(result_string,"Fail: /dev/rtc open error\n");
    __android_log_write(ANDROID_LOG_ERROR, ""," DEVICE...ERROR. ");
    return result_string;
}

ret = ioctl(rtc_fd, RTC_RD_TIME, &rtc_tm);
if (ret == -1) {
    strcpy(result_string,"Fail: rtc ioctl RTC_RD_TIME error\r\n");
    return result_string;
}

UNABLE TO OPEN DEVICE と常に表示されます。デバイス ノードを開くための解決策を提案してください。

4

1 に答える 1

2

何よりもまず、これが機能するには明らかにルート化された電話が必要です.

そうは言っても、Android では、ルート化された電話であっても、ユーザー アプリケーションがスーパー ユーザー権限を取得することはできません。代わりに、スーパーユーザー権限で新しいプロセスを起動できます。

スーパーユーザーとして実行する最も簡単な方法は、次のように仮想端末を作成することです。

Process proc = Runtime.getRuntime().exec("su");
DataOutputStream standard_in = new DataOutputStream(proc.getOutputStream());
DataInputStream standard_out = new DataInputStream(proc.getInputStream());

入力ストリームと出力ストリームを使用すると、root として効果的にコンソールにアクセスできるようになりました。これを使用して、一般的なコマンドライン コマンドを実行したり、デバイスにアクセスするプロセスを実行したりできます。

于 2011-10-11T08:56:17.653 に答える