前言
在此之前我們無論是做Activity,Service,BroadcastReceiver,都是在開機之後啟動並執行,其實開機事件也會送出一個叫做Android.intent.action.BOOT_COMPLETED的廣播資訊,只要可以接收這個ACTION名稱,就可以在我們自訂的BroadcastReceiver的onReceive()方法中運行自己的程式了。
只要一開機就會運行這個程式,知道這個程式被刪除掉。
思路
為了捕捉系統的開機事件廣播,所以必須在AndroidMainfesy.xml裡的<application/>節點當中設定<receiver/>標籤,並在其下的<intent-filter/>中設定<actionandroid:name="android.intent.action.BOOT_COMPLETED" />,這樣只要每次一開機,Android的系統就會把BOOT_COMPLETED廣播出來,而對這個廣播感興趣的廣播接收器就是我們自訂的這個繼承自BroadcastReceiver的MyBroadcastReceiver這個類,所以就會調用這個類的onReceive()方法,在這個方法中我們就可以運行我們的程式了。
實現步驟
一:布局檔案編寫
1.1 main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns: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="wrap_content"
android:text="@string/hello"
android:id="@+id/mytv"
/>
</LinearLayout>
二:代碼檔案編寫
2.1 MainActivity.java
package com.menglin.openequipmentrunapp;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity
{
private TextView tv;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//載入main.xml布局檔案
setContentView(R.layout.main);
//通過findViewById()方法得到TextView對象
tv = (TextView)findViewById(R.id.mytv);
//設定TextView對象的文本
tv.setText(R.string.hello);
}
}
2.2 MyBroadcastreceiver.java
package com.menglin.openequipmentrunapp;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class MyBroadReceiver extends BroadcastReceiver
{
static final String ACTION = "android.intent.action.BOOT_COMPLETED";
@Override
public void onReceive(Context context, Intent intent)
{
if (intent.getAction().equals(ACTION))
{
//建立一個Intent對象,並指定要啟動的class
Intent myintent = new Intent(context,MainActivity.class);
//調用另外一個Activity,將主控權移交給MainActivity
context.startActivity(myintent);
}
}
}
三:項目設定檔
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.menglin.openequipmentrunapp"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
</manifest>
運行效果如下
只要一開機就會出現我們的MainActivity.java這個程式了。