Запускайте безопасные вызовы API как root, android - PullRequest
3 голосов
/ 15 мая 2011

Я пытаюсь выполнить некоторые безопасные (внутренние) вызовы API, и я, очевидно, получаю исключения безопасности:

java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.provider.Telephony.SPN_STRINGS_UPDATED from pid=24864, uid=10107

Я пытаюсь выполнить тот же вызов из root, но я 'Я не уверен, если это возможно в первую очередь.Конечно, я могу получить права root:

Process p = Runtime.getRuntime().exec("su");

Но, похоже, это не сработает.Я получаю то же исключение безопасности.Один из примеров, которые я видел, пытается дождаться завершения вызова su, как показано ниже:

Process p = Runtime.getRuntime().exec("su");
p.waitFor();

, но это мне тоже не помогло.Что я тогда делаю не так?Можно ли вообще это сделать?

Если это важно, я пытаюсь получить экземпляр класса com.android.internal.telephony.Phone, используя PhoneFactory (получая их с отражением).Если отбросить размышления, это будет выглядеть примерно так:

// Initialize the telephony framework
PhoneFactory.makeDefaultPhones(this);
// Get the default phone
Phone phone = PhoneFactory.getDefaultPhone();

1 Ответ

5 голосов
/ 16 мая 2011

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

Команда su не меняет удостоверение / разрешение вызывающего его процесса - она ​​позволяет запускать дочерний процесс с повышенными разрешениями. Но не очень понятно, как вы могли бы запустить приложение для Android таким образом (возможно, с помощью app_process - но на самом деле установка в качестве системного приложения - правильный способ сделать это).

Также обратите внимание, что превращение вашего приложения в системное приложение по-прежнему не запускает его с правами root.

...