核心先贴出来,稍后总结
总之就是,不要用
process = Runtime.getRuntime().exec("su"); // 切换到root帐号
os = new DataOutputStream(process.getOutputStream());
os.writeBytes(cmd + "exit\n");
os.flush();
的方式写入后续命令
su 本身就可以执行带命令的参数
su -c ‘sh’
单引号把要执行的命令包起来
同时解决了网上的另一个问题:文件名是中文的话,静默安装就不能实现
下面是个例子:
package com.example.roottest;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import android.util.Log;
public class RootUser {
private static RootUser mInstance = null;
private Boolean hasSu = null;
private static final String SU_BIN = "/system/bin/su";
private static final String SU_XBIN =