unity导出自启动的android apk

我们自己的程序要设置成开机自启动。别问为什么。我们不是流氓软件,是游戏机主板 你懂的。。。所以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编译导出即可

猜你喜欢

转载自blog.csdn.net/glunoy/article/details/81068894