当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为 android.intent.action.BOOT_COMPLETED。只要在程序中“捕捉”到这个消息,再启动之即可。记住,Android框架说:Don''t call me, I''ll call you back。我们要做的是做好接收这个消息的准备,而实现的手段就是实现一个BroadcastReceiver。
AndroidManifest.xml文件内容:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ys.autostartdemo">
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<receiver android:name=".BootBroadcast">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</receiver>
</application>
</manifest>
BootBroadcast文件内容:
package com.ys.autostartdemo;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
/**
* 文 件 名: BootBroadcast
* 创 建 人: Ace.Wu
* 创建日期: 2017/8/25 20:02
* 修改时间:
* 修改备注:
*/
public class BootBroadcast extends BroadcastReceiver{
private static final String ACTION = "android.intent.action.BOOT_COMPLETED";
private static final String TAG = "StartBroadcastReceiver";
@Override
public void onReceive(Context context, Intent intent){
Log.d(TAG,"开机启动了");
if (intent.getAction().equals(ACTION)){
Log.d(TAG,"开机启动了接收到了");
// Intent i = new Intent(context,MainActivity.class);
Intent newIntent = context.getPackageManager()
.getLaunchIntentForPackage("com.ys.autostartdemo");
// i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(newIntent);
Log.d(TAG,"开机启动了接收到了^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
}
}
}
可以默认创建一个Activity,来测试这段代码