简书链接:一段惊险刺激的真实体验手机屏幕被我摔坏了,手机adb暂时能连接但是手机root了,怎么搞。 文章字数:985,阅读全文大约需要3分钟 能连接自然能用屏幕控制软件vysor,但是这个软件需要安装一个app,还是需要手机端确认,后面选择了另外一个成功解决了这个问题,接下来需要一个root版本的adb wifi软件,这样可以wifi启动,虽然软件下载了,但是貌似开机并不能自动启动,而我没有在一这个细节,那么今天我访问存储目录发现访问不了,我就用电脑控制手机切换成传递文件 结果adb断了,而且开发者模式允许调试功能关闭也没了, 好在qq是属于手机白名单,而我的手机也root了,也安装了qq机器人,哪怕重启也会启动qq,而qq插件会自动运行机器人软件,但是当时的情况是忘记给机器人授权root指令了,通过命令是无法运行adb wifi这样的软件了。
但是我竟然以为我的机器人应该没写支持shell的命令,毕竟很久没搞机器人了,,现在干着急半天,而且我还看了机器人源代码,发现支持shell执行,但是我没给root权限授权,执行完成之后一直提示Unallowed user
并没有其他写启动应用(免root)的指令,最后灵光一现,现在手机连接上usb,虽然无法启动开发者模式,但是还可以通过电脑访问存储目录呀,好在我的机器人支持加载java插件,js插件,而且存储目录都是外部存储, 对我来说肯定选择java插件了,
js我感觉还是吃力,于是我编写了一个插件,然后执行了配置 重载
以及插件信息
发现成功加载机器人插件了,然后成功启动了应用,然后通过路由器查看到了手机的ip地址,然后就通过adb connect ip地址 成功连上了,妈的! 最后我赶紧给我的机器人授权root。 下面是kingroot授权界面
下面是我写插件放到存储目录,让手机端启动应用adb wifi应用,然后电脑端连接adb connect ip 的插件代码。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 package cn.qssq666.robot.plugin.sdk.control; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.io.File; import java.util.List; import cn.qssq666.plugindemo.SimplePluginInterfaceWrapper; import cn.qssq666.robot.plugin.sdk.interfaces.AtBeanModelI; import cn.qssq666.robot.plugin.sdk.interfaces.IMsgModel; /** * Created by qssq on 2018/7/19 [email protected] */ //cn.qssq666.robot.plugin.sdk.control.PluginMainImpl public class PluginMainImpl extends SimplePluginInterfaceWrapper { private static final String TAG = "PluginMainImpl"; public File getPicRootdir() { return new File("/sdcard/qssq666/pic"); } String mLastMsg = ""; @Override public String getAuthorName() { return "情随事迁"; } @Override public int getVersionCode() { return 2; } @Override public String getBuildTime() { return "2021-8-14 01:15:07"; } @Override public String getVersionName() { return "1.1"; } @Override public String getPackageName() { return "cn.qssq666.applauncher"; } @Override public String getDescript() { return ""; } @Override public String getPluginName() { return "应用启动"; } @Override public boolean isDisable() { return false; } @Override public void setDisable(boolean disable) { } @Override public boolean onReceiveMsgIsNeedIntercept(IMsgModel item) { mLastMsg = item.getMessage(); String message = item.getMessage(); if(message.startsWith("启动")){ if(!getConfigApi().isManager(item.getSenderuin())){ getControlApi().sendMsg(item.setMessage("你不是管理员")); return true; } String packageName = message.substring(2); if(TextUtils.isEmpty(packageName)){ getControlApi().sendMsg(item.setMessage("请输入包名")); } try{ Context context = getContext(); PackageManager packageManager = context.getPackageManager(); Intent intent =null; intent = packageManager.getLaunchIntentForPackage(packageName); context.startActivity(intent); getControlApi().sendMsg(item.setMessage("已启动"+ packageName)); }catch (Throwable e){ getControlApi().sendMsg(item.setMessage("启动失败"+ Log.getStackTraceString(e))); } return true; } return false; } @Override public boolean onReceiveOtherIntercept(IMsgModel item, int type) { return false; } @Override public void onDestory() { } @Override public View onConfigUi(ViewGroup viewGroup) { TextView textView = new TextView(viewGroup.getContext()); textView.setText("应用启动" + mLastMsg); return textView; } @Override public int getMinRobotSdk() { return 0; } @Override public boolean onReceiveRobotFinalCallMsgIsNeedIntercept(IMsgModel iMsgModel, List<AtBeanModelI> list, boolean b, boolean b1) { return false; } }
为了防止更多意外,还需要搞不用机器人也能开机启动之类的更好了,这个可能需要借助xposed插件勾住launcher应该可以,写一个自启动没生效,还需要研究是哪个应用把自启动给禁用了,我目前没有发现被禁用,但是没找到原因。