необходимые права root для приложения Android - PullRequest
0 голосов
/ 11 октября 2011

Я пишу приложение для доступа ко многим узлам системного устройства.Чтобы открыть узлы устройства, я написал нативные методы. Когда я пытаюсь выполнить его, я не могу открыть узел устройства, поскольку у моего приложения нет корневых разрешений.Может ли кто-нибудь сказать, пожалуйста, дать разрешение root на мое приложение для Android.сведения об устройстве: 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;
}

Всегда говорится, что невозможно открыть устройство. Может кто-нибудь предложить решение открыть узел устройства.

1 Ответ

2 голосов
/ 11 октября 2011

Прежде всего вам, очевидно, понадобится рутированный телефон, чтобы все это работало.

При этом Android не позволяет пользовательскому приложению получать права суперпользователя даже на рутованном телефоне. Вместо этого он позволяет запустить новый процесс с правами суперпользователя.

Самый простой способ запустить приложение от имени суперпользователя - создать виртуальный терминал следующим образом:

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

Используя потоки ввода и вывода, вы теперь фактически получаете консольный доступ от имени пользователя root, который можно использовать для запуска типичных команд командной строки или для запуска процесса, который обращается к вашему устройству за вас.

...