Android超级用户

时间:2015-03-26 14:49:37

标签: android system superuser

我在system app rooted/customizedAOSP Android上运行了fpath

我可能需要从我的个人网站下载我的应用程序的新版本,并在Android系统上用新版本替换它。

这必须由应用程序本身自动完成,而不是使用adb命令手动完成。

我做了什么

假设我已经在/system/下载了我的apk。

使用以下代码段我尝试使用read/write权限重新安装try { String line; Process p = Runtime.getRuntime().exec("su"); // open input/output facilities OutputStreamWriter osw = new OutputStreamWriter(p.getOutputStream()); BufferedReader in = new BufferedReader( new InputStreamReader(p.getInputStream()) ); // output the command osw.write("mount -o rw,remount /system"); osw.flush(); // read the response while ((line = in.readLine()) != null) { Log.i("UPDATE", "output mount rw " + line); } // output the command osw.write("cp " + fpath + " /system/app/myapp.apk"); osw.flush(); // read the response while ((line = in.readLine()) != null) { Log.i("UPDATE", "output cp " + line); } // output the command osw.write("mount -o ro,remount system"); osw.flush(); // read the response while ((line = in.readLine()) != null) { Log.i("UPDATE", "output mount ro " + line); } } catch (Exception e) { Log.e("UPDATE", "error in executing shell commands: " + e.getMessage()); } 文件夹,然后在该文件夹上移动我更新的apk。

superuser

此代码段在mount命令之后卡在第一个readLine上。

问题:

  1. 为什么会卡在那里?我不应该期望从输入流中读取内容吗?
  2. 即使我删除了readLines,它也无法正常工作。文件系统没有重新安装,文件显然没有被复制。为什么?
  3. 有一种方法可以避免{{1}}提示要求权限吗?我的应用程序必须在无屏幕系统上运行。我无法得到用户的确认。
  4. 有更好的方法可以做我需要的事情吗?
  5. 谢谢

1 个答案:

答案 0 :(得分:0)

  

有更好的方法来做我需要的事情吗?

复制APK不会安装它。使用pm代替cp

  

有一种方法可以避免超级用户提示要求权限吗?

这取决于su应用,因此如果您需要自动授予权限而不询问或记住权限。