uni-app实现Android开机自启动
本部分通过修改本地离线打包的源码实现
一、修改AndroidManifest.xml
application之前
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
application之中
<receiver
android:name=".BootCompleteReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</receiver>
二、java下新建包名
以com.test.aytestcc
为例:
com.test.aytestcc
三、包名下新建BootCompleteReceiver类
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class BootCompleteReceiver extends BroadcastReceiver {
public BootCompleteReceiver()
{
}
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))
{
Intent intentMainActivity = new Intent(intent.ACTION_MAIN);
intentMainActivity.setClassName(context.getPackageName(), "io.dcloud.PandoraEntryActivity");
intentMainActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intentMainActivity);
}
}
}
主要作用的是:
intentMainActivity.setClassName(context.getPackageName(), "io.dcloud.PandoraEntryActivity");
原生的都是
intentMainActivity.setClassName(context.getPackageName(), MainActivity.class);
总之,是个坑啊,我自己手机调试,一直不自动重启,在led屏幕的安卓7.0系统可以实现了,实现了我以为没有实现,像个傻子一样一直在试,都要崩溃了,真是大开眼界。试过插件市场的组件,感觉没用,也可能是漏了哪里,应该还是得改离线包的源码,我这边这样试,是可以的,如果有何疑问,可以联系。
对应视频
有疑问
微信小程序联系客服,及时沟通
扫描公众号,了解更多实例与资源免费分享: