android:app_process两种用法
来源:互联网 发布:arp ip 对应mac地址 编辑:程序博客网 时间:2024/06/10 02:09
(1)app_process是用来干嘛的?
app_process可以在Android启动独立的Java进程(Main应用程序)
(2)在什么情况下,可以启动Java进程呢?
a. 利用adb shell启动的Java进程,这种情况下Java进程拥有shell级别的权限,所以Java程序对应的PID和Shell的PID一样。
b.利用app启动的Java进程,这种情况下Java进程跟当前app的权限一样,没有Shell权限。
(3)可以做哪些事情?
通过电脑shell启动一个shell的Java程序,就可以长驻手机了,可以做远程录屏、远程控制等特殊功能。
(4)在adb下,如何启动?
d:cd D:\work_sdk\android\platform-toolsadb push D:\test\Main.dex /sdcard/@echo offecho export CLASSPATH=/sdcard/Main.dex >> temp.txtecho exec app_process /sdcard cn.mimashuo.puppet.Main >> temp.txtadb shell < temp.txtdel "temp.txt"pause
(5)在Android下,如何启动?
private int testAppProcess() { int status = 0; synchronized (HomeActivity.class) { Process process = null; DataOutputStream os = null; MsgInputThread msgInput = null; ErrorInputThread errorInput = null; try { process = Runtime.getRuntime().exec("su");// 切换到root帐号 os = new DataOutputStream(process.getOutputStream()); os.writeBytes(" export CLASSPATH=/sdcard/Main.dex \n"); os.writeBytes(" exec app_process /sdcard cn.mimashuo.puppet.Main \n"); os.writeBytes(" exit \n"); os.flush(); // 启动两个线程,一个线程负责读标准输出流,另一个负责读标准错误流=>解决waitFor()阻塞的问题 msgInput = new MsgInputThread(process.getInputStream(), new MsgInputThread.Listen() { @Override public void test() { } }); msgInput.start(); errorInput = new ErrorInputThread(process.getErrorStream()); errorInput.start(); // waitFor返回的退出值的过程。按照惯例,0表示正常终止。waitFor会一直等待 status = process.waitFor();// 什么意思呢?具体看http://my.oschina.net/sub/blog/134436 if (status != 0) { LogUtil.d("root日志:" + msgInput.getMsg()); } } catch (Exception e) { LogUtil.e("出错:" + e.getMessage()); status = -2; return status; } finally { try { if (os != null) { os.close(); } } catch (Exception e) { } try { if (process != null) { process.destroy(); } } catch (Exception e) { } try { if (msgInput != null) { msgInput.setOver(true); } } catch (Exception e) { } try { if (errorInput != null) { errorInput.setOver(true); } } catch (Exception e) { } } } // end synchronized return status; }
(6)关于Java进程启动后的Pid, Uid与权限等问题,可参考:
http://blog.csdn.net/u010651541/article/details/53163542
阅读全文
0 0
- android:app_process两种用法
- android中的app_process命令
- app_process command in Android
- android java代码的启动:app_process
- android java代码的启动:app_process
- android java代码的启动:app_process
- android java代码的启动:app_process
- Android上app_process启动java进程
- Android ProgressDialog的两种用法
- android LayoutInflater的两种用法
- Android---24---Spinner的两种用法
- Android Intent的两种用法
- Android:layout_weight属性的两种用法
- Android:adb通过app_process调用java类报错-java.lang.ClassNotFoundException
- Android通过WebService服务的两种用法介绍
- TabHost的两种用法-Android学习笔记
- CToolTipCtrl 两种用法
- Android线程的三种用法和子线程更新UI两种用法
- 如何用OpenCV训练自己的分类器
- struts2基本用法
- PID闭环自动控制直流电机速度
- Microsoft Visual Studio 2017 Supports Intel® AVX-512
- 状态模式
- android:app_process两种用法
- mybatis中的#和$的区别
- two weeks vim(3)
- 判断一棵树是否是完全二叉树
- SpringBoot定时任务@EnableScheduling和cron表达式
- 线程安全无处不在
- libtest.a: could not read symbols: Archive has no index; run ranlib to add one的原因和解决方案
- 如何在SpringBoot下读取自定义properties配置文件
- Maximum Sequence