How to create android apps with root access?
I found out that there's so many apps out there which required root access.
How were they able to create those apps? Where did they found all the resource? Is there any official document about the root access? Or will it need some hackish way?
And what kinds of access which required root access? Is proxy one of them? I didn't found any documentation about accessing the proxy anywhere.
=== UPDATE ===
I think some people mistaken by my question. I know that the pho开发者_高级运维ne need to be rooted to get root access. but the things I want to find out is, what kind of services are need root access? Some I see wireless tether, the other is to clear cache (is it even need root access just to clear cache?), and the other apps out there. is there any list of what I kind of advantage I get from root access?
You need su installed in the phone (of course). Details here: http://forum.xda-developers.com/showthread.php?t=682828
And to use it, is as simple as running su command. Here is a sample I use to reboot the phone programmatically (copied from this answer: Android 2.2: Reboot device programmatically )
try {
Runtime.getRuntime().exec("su");
Runtime.getRuntime().exec("reboot");
} catch (IOException e) {
}
Should work on most versions:
try {
Runtime.getRuntime().exec("su -c reboot");
} catch (IOException e) {
}
Many of the applications depend on a shell script/command prefixed with su.
I do not think there is a way to request another context or elevate privileges in Android API.
Use this function and use it anywhere of your project
public static void sudo(String... strings) {
try {
Process su = Runtime.getRuntime().exec("su");
DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());
for (String s : strings) {
outputStream.writeBytes(s + "\n");
outputStream.flush();
}
outputStream.writeBytes("exit\n");
outputStream.flush();
try {
su.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Usage of the above function and use it any type of shell commands with root users
sudo("iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080");
Usually rooted apps are just using commands like "su ...", which they aren't able to use without root access. And with these command executions can they reach everything (i.e. removing a system app or boosting your android device)
精彩评论