在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));}}
相关文章推荐
- Java集合类
- 《JAVA与模式》之责任链模式
- Java关键字final、static使用总结
- java找不到或无法加载主类
- 【转】Java日期计算之Joda-Time
- Java源码之LinkedHashSet
- 使用Jacob自动替换书签内容
- Java基础--泛型
- Eclipse工作空间的删除方法
- Java创建,解析XML片段文件,无根节点root
- JVM读书笔记与总结之对象的访问定位
- Spring事务的传播特性和隔离级别
- Eclipse使用技巧总结-----/*自己编写*/
- Spring Data JPA
- java 发送soap 代码
- Spring Data JPA初使用
- Eclipse设置自动换行
- Struts2的标签,valueStack,$ ,# ,% 的问题
- 【设计模式】单例模式
- (Java)LeetCode-214. Shortest Palindrome