image.png
结果adb断了,而且开发者模式允许调试功能关闭也没了,
好在qq是属于手机白名单,而我的手机也root了,也安装了qq机器人,哪怕重启也会启动qq,而qq插件会自动运行机器人软件,但是当时的情况是忘记给机器人授权root指令了,通过命令是无法运行adb wifi这样的软件了。
但是我竟然以为我的机器人应该没写支持shell的命令,毕竟很久没搞机器人了,,现在干着急半天,而且我还看了机器人源代码,发现支持shell执行,但是我没给root权限授权,执行完成之后一直提示Unallowed user
image.png
并没有其他写启动应用(免root)的指令,最后灵光一现,现在手机连接上usb,虽然无法启动开发者模式,但是还可以通过电脑访问存储目录呀,好在我的机器人支持加载java插件,js插件,而且存储目录都是外部存储, 对我来说肯定选择java插件了,
js我感觉还是吃力,于是我编写了一个插件,然后执行了配置 重载
以及插件信息
发现成功加载机器人插件了,然后成功启动了应用,然后通过路由器查看到了手机的ip地址,然后就通过adb connect ip地址 成功连上了,妈的!
最后我赶紧给我的机器人授权root。
下面是kingroot授权界面
image.png
下面是我写插件放到存储目录,让手机端启动应用adb wifi应用,然后电脑端连接adb connect ip 的插件代码。
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;
}
}
image.png
image.png
为了防止更多意外,还需要搞不用机器人也能开机启动之类的更好了,这个可能需要借助xposed插件勾住launcher应该可以,写一个自启动没生效,还需要研究是哪个应用把自启动给禁用了,我目前没有发现被禁用,但是没找到原因。
标签:...,插件,return,String,import,惊险刺激,Override,手机,public From: https://blog.51cto.com/u_15458814/5885099