背景知识:当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字

符串常量表示为 android.intent.action.BOOT_COMPLETED。只要在程序中“捕捉”到这个消息,再启动之

即可。记住,Android框架说:Don''t call me, I''ll call you back。我们要做的是做好接收这个消息的准备,而

实现的手段就是实现一个BroadcastReceiver。

1、界面Activity,BootStartDemo.java文件



​public​​​ ​​class​​​ ​​BootStartDemo​​​ ​​extends​​​ ​​Activity{ ​


​@Override​

​public​​​ ​​void​​​ ​​onCreate(Bundle savedInstanceState) {​

​super​​​​.onCreate(savedInstanceState);​

​//无title ​

​requestWindowFeature(Window.FEATURE_NO_TITLE);​

​//全屏 ​

​getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,​

​WindowManager.LayoutParams.FLAG_FULLSCREEN);​

​setContentView(R.layout.main);​

​new​​​ ​​Thread() {​

​public​​​ ​​void​​​ ​​run() {​

​try​​​ ​​{​


​sleep(​​​​10000​​​​);​

​}​​​ ​​catch​​​ ​​(Exception e) {​

​e.printStackTrace();​

​}​​​ ​​finally​​​ ​​{​

​finish();​​​ ​​// 关闭页面​

​}​

​}​

​}.start();​


​}​

​}


这段代码很简单,当Activity启动时,会显示TextView,用它显示你想显示的字样,并且这个页面只显示10秒后消失。

2、接收广播消息:BootBroadcastReceiver.java



​public​​​ ​​class​​​ ​​BootBroadcastReceiver​​​ ​​extends​​​ ​​BroadcastReceiver {​

​static​​​ ​​final​​​ ​​String action_boot=​​​​"android.intent.action.BOOT_COMPLETED"​​​​;​


​@Override​

​public​​​ ​​void​​​ ​​onReceive(Context context, Intent intent){ ​

​if​​​ ​​(intent.getAction().equals(action_boot)){​

​IntentootStartIntent= ​​​​new​​​ ​​Intent(context,BootStartDemo.​​​​class​​​​);​

​ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);​

​context.startActivity(ootStartIntent);​

​}​


​}​


​}



该类继续自 BroadcastReceiver,覆载方法 onReceive 中,检测接收到的 Intent是否符合

BOOT_COMPLETED,如果符合,则启动BootStartDemo这个Activity。

3、配置文件

(1)AndroidManifest.xml :



​<?xml version=​​​​"1.0"​​​ ​​encoding=​​​​"utf-8"​​​​?>​

​<!-- 这是一个开机自启动程序--> ​

​<manifestxmlns:android= ​​​​"http://schemas.android.com/apk/res/android"​

​package​​​​=​​​​"com.ajie.bootstartdemo"​

​android:versionCode=​​​​"1"​

​android:versionName=​​​​"1.0"​​​​>​

​<applicationandroid:icon= ​​​​"@drawable/icon"​​​ ​​android:label=​​​​"@string/app_name"​​​​>​

​<activityandroid:name= ​​​​".BootStartDemo"​

​android:label=​​​​"@string/app_name"​​​​>​

​<intent-filter>​

​<actionandroid:name= ​​​​"android.intent.action.MAIN"​​​ ​​/>​

​<categoryandroid:name= ​​​​"android.intent.category.LAUNCHER"​​​ ​​/>​

​</intent-filter>​

​</activity>​

​<spanstyle= ​​​​"color:#ff00ff;" ​​​​><receiverandroid:name= ​​​​".BootBroadcastReceiver"​​​​>​

​<intent-filter>​

​<actionandroid:name= ​​​​"android.intent.action.BOOT_COMPLETED"​​​ ​​/>​

​<categoryandroid:name= ​​​​"android.intent.category.HOME"​​​ ​​/>​

​</intent-filter>​

​</receiver>​

​</span>   </application> ​

​<span style=​​​​"color: #ff00ff;"​​​​><strong><uses-permissionandroid:name= ​​​​"android.permission.RECEIVE_BOOT_COMPLETED"​​​​></uses-permission></strong>​

​</span></manifest>


注意其中颜色标红那一部分,该节点向系统注册了一个 receiver,子节点 intent-filter 表示接收

android.intent.action.BOOT_COMPLETED 消息。并且还要配置android.permission.RECEIVE_BOOT_COMPLETED权限。

(2)Layout文件,main.xml



​<?xml version=​​​​"1.0"​​​ ​​encoding=​​​​"utf-8"​​​​?>​

​<LinearLayoutxmlns:android= ​​​​"http://schemas.android.com/apk/res/android"​

​android:orientation=​​​​"vertical"​

​android:layout_width=​​​​"fill_parent"​

​android:layout_height=​​​​"fill_parent"​


​>​

​<TextView ​

​android:layout_width=​​​​"fill_parent"​

​android:layout_height=​​​​"fill_parent"​

​android:text=​​​​"@string/boottext"​

​android:textColor=​​​​"#5F2DD2"​

​android:background=​​​​"#FFFFFF"​

​android:textSize=​​​​"60px"​

​android:gravity=​​​​"center_horizontal"​

​/>​

​</LinearLayout>

完成后,编译出apk包,安装到模拟器或手机中。关机,重新开机,就会显示BootStartDemo这个Activity显示出来的页面。