1.首先我们需要创建一个广播接收者,自定义一个类去继承BroadcastReceiver,然后重写onReceive()方法,在其中启动你要启动的app或者service,例如;
public class SelfStarting extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent(context, SelfStarting.class);
context.startService(service);
Log.d("chg","开机自启动成功!");
Intent launchIntentForPackage = context.getPackageManager()
.getLaunchIntentForPackage("com.example.johncheng.appselfstarting");
context.startActivity(launchIntentForPackage);
//当应用安装在SD中时需要添加如下代码:
if (intent.getAction().equals(Intent.ACTION_MEDIA_MOUNTED) ||
intent.getAction().equals(Intent.ACTION_MEDIA_UNMOUNTED))
{
Intent launchIntent = new Intent(context, Login_Activity.class);
launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(launchIntent);
}
}
2.在清单文件中配置我们的广播,
<receiver android:name=".SelfStarting">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
//当应用安装在SD卡时,需要添加如下action,记住:需要单独放在intent_filter中,否则
BOOT_COMPLETED无法监听到
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED"/>
<action android:name="android.intent.action.MEDIA_UNMOUNTED"/>
</intent-filter>
</receiver>
3.添加相应的权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
这样就完成了应用的开机自启动。