AutoJs Web Control 搭建过程【2】

摘要: Auto.js 和 AutoJs Web Control 联合起来可以实现免root的Android云控。 但是在实际使用还需要解决以下几个问题:

一、目标

Auto.js 和 AutoJs Web Control 联合起来可以实现免root的Android云控。 但是在实际使用还需要解决以下几个问题:


app开机自动启动和自动解锁

app免root自动获取无障碍权限

app和server通讯支持心跳,断线重连

二、实现步骤

app开机自动启动和自动解锁

注册一个静态广播去监听开机启动完毕的广播,然后在监听到开机广播完毕后启动 Auto.js的主Activity或者Service;


首先需要定义一个继承自BroadcastReceiver的开机广播接收者BaseBroadcastReceiver,然后在AndroidManifest.xml文件中增加对应的权限;

<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>

幸运的是,原作者已经有了这部分代码,我们只需要增加对开机启动广播的响应即可:


Tip:


我们修改的这份代码来自于https://github.com/zrk1993 作者修改了app的包名 src/main/java/org/calibur/stars/external/receiver/BaseBroadcastReceiver.java

BaseBroadcastReceiver.java
    private static final String LOG_TAG = "BaseBroadcastReceiver";
	// 启动
    private final String ACTION_BOOT = "android.intent.action.BOOT_COMPLETED";

    @SuppressLint("CheckResult")
    public void onReceive(Context context, Intent intent) {
        Log.d(LOG_TAG, "onReceive: intent = " + intent + ", this = " + this);
        try {
            TimedTaskManager.getInstance().getIntentTaskOfAction(intent.getAction())
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(intentTask -> runTask(context, intent, intentTask), Throwable::printStackTrace);

            // add fenfei 开机启动后台服务
            // BaseBroadcastReceiver: onReceive: intent = Intent { act=android.intent.action.BOOT_COMPLETED
            if (ACTION_BOOT.equals(intent.getAction()))
            {
                Log.d("fenfei onReceive:", "unLock");

                // 获取电源管理器对象
                PowerManager pm = (PowerManager) context
                        .getSystemService(Context.POWER_SERVICE);
                // 获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是调试用的Tag
                PowerManager.WakeLock wl = pm.newWakeLock(
                        PowerManager.ACQUIRE_CAUSES_WAKEUP
                                | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "bright");
                // 点亮屏幕
                wl.acquire(10000);
                // 释放
                wl.release();

                // 得到键盘锁管理器对象
                KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
                KeyguardManager.KeyguardLock kl = km.newKeyguardLock("unLock");
                // 解锁
                kl.disableKeyguard();
                // end


                Log.d("fenfei onReceive:", "Boot system Begin");
				// 启动开始屏幕
                Intent startIntent = new Intent(context, SplashActivity.class);
                startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(startIntent);
                Log.d("fenfei onReceive:", "Boot system Finish");

                // Intent i = new Intent(context, AlarmRunningService.class);
                // context.startService(i);
            }
            // end

        } catch (Exception e) {
            GlobalAppContext.toast(e.getMessage());
        }
    }

app免root自动获取无障碍权限


本文由 帝一博客 原创发布。用户在本站发布的原创内容(包括但不仅限于回答、文章和评论),著作权均归用户本人所有。独家文章转载,请联系邮箱:17762131@qq.com。获得授权后,须注明本文地址: https://bubukou.com/autojs/1625.html

网友留言评论

0条评论