您的位置:首页 > 编程语言 > Java开发

在root过的手机中运行java程序

2016-06-12 15:57 344 查看
在root过的手机中运行java程序,通过该方式可以用来唤醒服务,或者检查程序是否卸载
public static Process newShellProcessWithDeaultEnv() throws IOException {
ProcessBuilder builder = new ProcessBuilder("sh").redirectErrorStream(false);
Map<String, String> env = builder.environment();
env.put("LD_LIBRARY_PATH", getLdLibrary());
return builder.start();
}

public static String getLdLibrary() {
String systemLib = System.getenv("LD_LIBRARY_PATH");
if (systemLib == null) {
systemLib = "/vendor/lib:/system/lib";
} else {
if (!systemLib.contains("/vendor/lib")) {
systemLib += ":/vendor/lib";
}
if (!systemLib.contains("/system/lib")) {
systemLib += ":/system/lib";
}
}
return systemLib;
}

public  void testRunJava(){
String TAG = "syh";
try{
Process proc = newShellProcessWithDeaultEnv();

StringBuilder cmd = new StringBuilder("export CLASSPATH=").append(getPackageCodePath()).append("\n");
proc.getOutputStream().write(cmd.toString().getBytes());

cmd.setLength(0);
cmd.append("exec /system/bin/app_process /data/app ");
cmd.append(JavaObject.class.getName()).append(" ");
cmd.append(android.os.Process.myPid()).append(" ");
cmd.append(" &\n");
Log.d(TAG, "cmd: " + cmd);
proc.getOutputStream().write(cmd.toString().getBytes());
proc.getOutputStream().flush();
Log.i(TAG, "start daemon success");

proc.waitFor();
proc.destroy();
Log.i(TAG, "start daemon success2");
} catch (Exception e) {
e.printStackTrace();
Log.i(TAG, "start daemon e:"+e.toString());
}

}
//=========================================================
public class JavaObject {public static void main(String[] args){Log.d("syh","JavaObject main args:"+(args==null?null:args.length));}}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: