如何通过AndroidStudio二次开发Unity项目,实现开机自启动

本章主要讲解怎么将unity项目导入Androidstudio进行二次开发以及实现开机自启动功能。在这里,Unity进行android开发的对于sdk以及jdk基本设置就不讲解了,直接来看怎么导出项目。

一 Unity编辑器下导出gradle工程

(一)导出项目时,需要注意下图的内容,File–>Build Settings–>Player Settings–>Other Settings
在这里插入图片描述
(二)接下来,按照如下图设置,导出项目到指定路径。
在这里插入图片描述

二 在Android Studio中打开Multidex包

(一)首先,打开Android Studio,选择下面的导入方式,将刚刚在Unity编辑器下导出的gradle导入。

在这里插入图片描述
(二)
在这里插入图片描述
(三)在这里插入图片描述
好了,现在就可以进行真机编译运行了。

三 app实现开机自启动

开机会发出一个广播,过滤到这个广播就可以做你想干的事情了,开机一般是锁屏状态,还copy了自动解锁屏幕,会有4秒左右的延迟才启动

(一)创建广播类
在java文件夹下的包名文件下新建BootCompletedReceiver类

package com.YSGS.DOUTU;
import android.annotation.SuppressLint;
import android.app.KeyguardManager;
import  android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.PowerManager;
import android.util.Log;

public class BootCompletedReceiver extends BroadcastReceiver{
    @Override
    public void onReceive(Context context, Intent intent) {
        PowerManager pm=(PowerManager)context.getSystemService(Context.POWER_SERVICE);
        @SuppressLint("InvalidWakeLockTag") PowerManager.WakeLock wl=pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP|PowerManager.SCREEN_BRIGHT_WAKE_LOCK,"StartupReceiver");
        wl.acquire();
        KeyguardManager km=(KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE);
        KeyguardManager.KeyguardLock kl = km.newKeyguardLock("StartupReceiver");
        if (intent.getAction().equals(("android.intent.action.BOOT_COMPLETED")))
        {
            Log.e("TAG", "onReceive: 开机启动");
            //开机启动
            Intent mainIntent = new Intent(context, UnityPlayerActivity.class);
            //在BroadcastReceiver中显示Activity,必须要设置FLAG_ACTIVITY_NEW_TASK标志
            mainIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(mainIntent);
        }
}
}

(二)添加权限和过滤器
在mainifests下的AndroidManifest.xml文件下,在application之前添加

<!--//允许程序禁用键盘锁-->
 <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
 <!--允许一个程序接收到 ACTION_BOOT_COMPLETED广播在系统完成启动-->
 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<!--允许使用PowerManager的 WakeLocks保持进程在休眠时从屏幕消失-->
 <uses-permission android:name="android.permission.WAKE_LOCK" />

注册权限,然后在activity后面添加

<receiver android:enabled="true" android:exported="true" android:name="com.YSGS.DOUTU.BootCompletedReceiver" android:permission="android.permission.RECEIVE_BOOT_COMPLETED">  
          <intent-filter>  
            <action android:name="android.intent.action.BOOT_COMPLETED" />  
            <action android:name="android.intent.action.QUICKBOOT_POWERON" />  
          <category android:name="android.intent.category.DEFAULT" />  
        </intent-filter>  
    </receiver>

开机广播过滤。 好了,现在可以真机测试了,如果手机上有装的安全中心等,把打包软件的开机自启动权限打开。