转载 http://blog.csdn.net/xwnxwn/article/details/43865343
略有改动的转载
首先是从BroadcastReceiver
派生出一个新类,用来监听系统启动后发出的广播消息Android.intent.action.BOOT_COMPLETED
。
BootReceiver.java:
import
android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class BootReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals( " android.intent.action.BOOT_COMPLETED " ))
{
Log.d( " BootReceiver " , " system boot completed " );
Intent newIntent = new Intent(context, FirstRun. class );
newIntent.setAction( " android.intent.action.MAIN " ); // MyActivity action defined in AndroidManifest.xml
newIntent.addCategory( " android.intent.category.LAUNCHER " ); // MyActivity category defined in AndroidManifest.xml
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // If activity is not launched in Activity environment, this flag is mandatory to set
context.startActivity(newIntent);
// if you want to start a service, follow below method:
/** *****************************************************
Intent service = new Intent(yourService.ACTION_START);
service.setClass(context, yourService.class);
context.startService(service);
//我改成:
//Intent i = new Intent(AutoRun.class.getName());
// i.setClass(context, AutoRun.class);
// context.startService(i);
***************************************************** */
}
}
}
import android.content.Context;
import android.content.Intent;
import android.util.Log;
public class BootReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals( " android.intent.action.BOOT_COMPLETED " ))
{
Log.d( " BootReceiver " , " system boot completed " );
Intent newIntent = new Intent(context, FirstRun. class );
newIntent.setAction( " android.intent.action.MAIN " ); // MyActivity action defined in AndroidManifest.xml
newIntent.addCategory( " android.intent.category.LAUNCHER " ); // MyActivity category defined in AndroidManifest.xml
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // If activity is not launched in Activity environment, this flag is mandatory to set
context.startActivity(newIntent);
// if you want to start a service, follow below method:
/** *****************************************************
Intent service = new Intent(yourService.ACTION_START);
service.setClass(context, yourService.class);
context.startService(service);
//我改成:
//Intent i = new Intent(AutoRun.class.getName());
// i.setClass(context, AutoRun.class);
// context.startService(i);
***************************************************** */
}
}
}
接下来这个类就是监听到系统启动完毕后,我们要运行的activity.
FirstRun.java
import
android.app.Activity;
import android.os.Bundle;
public class FirstRun extends Activity {
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
import android.os.Bundle;
public class FirstRun extends Activity {
public void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
当然,我们还要改配置文件,需要注意的是,在manifest.xml中需要加上
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
Manifest.xml
<?
xml version="1.0" encoding="utf-8"
?>
< manifest xmlns:android ="http://schemas.android.com/apk/res/android"
package ="com.service.prac"
android:versionCode ="1"
android:versionName ="1.0" >
< application android:icon ="@drawable/icon" android:label ="@string/app_name" >
< receiver android:name =".BootReceiver"
android:label ="@string/app_name" >
< intent-filter >
< action android:name ="android.intent.action.BOOT_COMPLETED" />
< category android:name ="android.intent.category.LAUNCHER" />
</ intent-filter >
</ receiver >
< activity android:name =".FirstRun" >
< intent-filter >
< action android:name ="android.intent.action.MAIN" />
< category android:name ="android.intent.category.LAUNCHER" />
</ intent-filter >
</ activity >
</ application >
< uses-sdk android:minSdkVersion ="3" />
< uses-permission android:name ="android.permission.RECEIVE_BOOT_COMPLETED" ></ uses-permission >
</ manifest >
< manifest xmlns:android ="http://schemas.android.com/apk/res/android"
package ="com.service.prac"
android:versionCode ="1"
android:versionName ="1.0" >
< application android:icon ="@drawable/icon" android:label ="@string/app_name" >
< receiver android:name =".BootReceiver"
android:label ="@string/app_name" >
< intent-filter >
< action android:name ="android.intent.action.BOOT_COMPLETED" />
< category android:name ="android.intent.category.LAUNCHER" />
</ intent-filter >
</ receiver >
< activity android:name =".FirstRun" >
< intent-filter >
< action android:name ="android.intent.action.MAIN" />
< category android:name ="android.intent.category.LAUNCHER" />
</ intent-filter >
</ activity >
</ application >
< uses-sdk android:minSdkVersion ="3" />
< uses-permission android:name ="android.permission.RECEIVE_BOOT_COMPLETED" ></ uses-permission >
</ manifest >