一段惊险刺激的真实体验 手机屏幕被我摔坏了,手机adb暂时能连接

2021-08-14  本文已影响0人  吉凶以情迁
能连接自然能用屏幕控制软件vysor,但是这个软件需要安装一个app,还是需要手机端确认,后面选择了另外一个成功解决了这个问题,接下来需要一个root版本的adb wifi软件,这样可以wifi启动,虽然软件下载了,但是貌似开机并不能自动启动,而我没有在一这个细节,那么今天我访问存储目录发现访问不了,我就用电脑控制手机切换成传递文件 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 qssq666@foxmail.com
 */
//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应该可以,写一个自启动没生效,还需要研究是哪个应用把自启动给禁用了,我目前没有发现被禁用,但是没找到原因。

上一篇 下一篇

猜你喜欢

热点阅读