我们自己的程序要设置成开机自启动。别问为什么。我们不是流氓软件,是游戏机主板 你懂的。。。所以unity安卓自启动的方法如下,如果有更好的办法,欢迎评论共同提高。
1.unity编译选项 install location 选择 force internal
2.先导出一个正常的apk。然后到Temp\StagingArea(不同的版本文件夹不一样 反正就找stag开头的) 下将 AndroidManifest.xml复制到 unity工程/Assets/Plugins/Android 目录下。
你说什么?没这个目录?自己建一个。。
3.打开该AndroidManifest.xml,在 </activity>的下面添加
<receiver android:enabled="true" android:exported="true" android:name="你的包名.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>
在user-freature的下面添加
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.hardware.usb.host" />
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE"/>
<uses-permission android:name="android.permission.STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.intent.action.BOOT_COMPLETED"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
//请注意。这里的“你的包名”,要替换成你的包名!不要无脑复制粘贴。
//下面的权限 只有
<uses-permission android:name="android.intent.action.BOOT_COMPLETED"></uses-permission>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
是和自启动相关的。至于其他的权限。。我复制粘贴的行不行?
4.导出成src工程。使用gradle。修改build.gradle到你所使用的gradle版本。
targetSdkVersion
compliedSdkVersion这些都不用我说了吧。
5.下面是BootCompletedReceiver.java 放到导出src的相关包名目录下。
package 你的包名;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class BootCompletedReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))
{
Intent newIntent = new Intent(context, UnityPlayerActivity.class);
newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(newIntent);
}
}
}
6.使用androidstudio编译导出即可