我正在尝试构建一个可以访问/ data dir(例如)的Android应用程序,而无需在执行su后解析在shell上运行的命令的输出。
我的意思是,经过大量的研究,并查看了一些根浏览器的代码,他们在需要root权限时所做的是在执行su之后解析命令的输出。
我想做的事情是:
File file = new File("/data");
File[] files = file.listFiles();// get the list array of file
for (int i = 0; i < files.length; i++) {
File fileItem = files[i];
System.out.println("FILE NAME: "+fileItem.getName().toString()) {
}
为了实现这一点,我认为应用程序进程必须从执行开始时以root身份运行。
我这样做后尝试从shell运行APP:
$su
#am start -n com.example.test/.ui.Activity
但在查看ps命令的输出之后,我看到应用程序以“u0_a110”用户身份运行而不是root用户。
此外,我尝试使用参数--user 0和--user 1000,结果相同......我认为dalvik虚拟机会从父进程中删除权限。
我还试图将应用程序转换为系统应用程序,将其移动到/ system / priv-app,结果相同,(应用程序的运行用户不是root用户,也不是系统)
可以与:
android:sharedUserId="android.uid.system"
在清单中,应用程序至少作为用户系统运行,我试图以这种方式运行应用程序,并且还放在/ system / priv-app中,并且手机没有完成启动。
我认为该错误是因为应用需要使用制造商的系统密钥进行签名。
可以以root用户身份运行某些Android应用程序,至少可以运行系统吗?
我知道如果我为ARM(或手机的架构)交叉编译Linux应用程序并以root身份在shell中运行该应用程序,该应用程序将具有root访问权限,但是,这是唯一的方法吗?我想用android java app实现它。
答案 0 :(得分:2)
据我所知,Java应用程序无法实现此目的。即使将系统uid分配给应用程序并使用平台认证进行签名,它仍然无法获得root权限。 systemuid的想法是访问一些系统级api,如控制飞机模式,获取帧缓冲,强制停止包等,但不控制具有root权限的文件系统。
答案 1 :(得分:0)
Android Rooting如今非常普遍。每个人在询问Root他们的Android设备时都感到神圣,但现在互联网上有很多应用程序可以帮助你在几秒钟内完成你的Android。无需了解Coding等等。也不需要PC
据我们所知,没有办法在此处添加Java。您只需要从应用商店的Play商店安装一些best root apps并开始构建您的应用即可。
通过出色的用户界面和人工智能,让您的应用程序更具吸引力可能会对您有所帮助 对于Root Permission,请尝试以下代码
try {
String[] reboot = new String[] { "su", "-c", "reboot" };
//-c will cause the next argument to be treated as a command
Process process = Runtime.getRuntime().exec(reboot);
process.waitFor(); //wait for the native process to finish executing.
} catch (Exception e) {
Toast.makeText(getApplicationContext()," Device not rooted.\n Could not reboot...",Toast.LENGTH_SHORT).show();
}
非常感谢!