ionic打包的app实现开机自启动功能(该功能在android系统有效)
1、新建一个StartBootReceiver类继承BroadcastReceiver,接受开机广播,具体代码如下
package com.sznari.survey; // 指StartBootReceiver类所在的路径
// 引入包
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class StartBootReceiver extends BroadcastReceiver {
//定义开机广播的Action
String ACTION = "android.intent.action.BOOT_COMPLETED";
String TAG="StartBootReceiver";
@Override
public void onReceive(Context context, Intent intent) {
//判断广播是否是开机的广播
if(ACTION.equals(intent.getAction())){
Log.d(TAG,"系统开机了");
//如果广播是开机广播那么跳转到MainActivity,必须要加上这行代码才能在手机开启的时
//候跳转到MainActivity
Intent main=new Intent(context,MainActivity.class);
main.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(main);
}
}
}
备注:该文件名称StartBootReceiver ,应该放在那个地方,让我很疑惑,最后找到会java的同事的帮助说package这个就是指路径,因为我的项目使用ionic写的,编译打包后会生成platforms文件,找到android/app/src/main/java/com/…/…/MainActivity.java文件的地方,创建一个StartBootReceiver.java文件,将该文件放在和MainActivity.java文件的同路径下面就可以了
2、找到AndroidManifest (路径platforms/android/app/src/main)添加以下代码
/*
* 备注: android:name="com.sznari.survey.StartBootReceiver"
* 表示新建StartBootReceiver.java文件下面的 package com.sznari.survey, StartBootReceiver就是类名
*/
<receiver android:enabled="true" android:exported="true" android:name="com.sznari.survey.StartBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED">
</action>
<category android:name="android.intent.category.HOME">
</category>
</intent-filter>
</receiver>
3、添加权限 找到AndroidManifest (路径platforms/android/app/src/main)添加以下代码
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />