教你开启自启动程序! 在电脑的操作系统中都能在电脑开机后自启动一些程序,在Android平台也是可以的,那么我们如何才能做到这样的效果呢。
1、需要BroadcastReceiver
2、使用interfilter中的action:android.intent.action.BOOT_COMPLETED //当启动手机系统启动完成后就启动此Receiver
功能:当手机系统启动完成后,直接启动某个程序或者Activity,这里直接启动某个程序
一下是代码分析:
AndroidManifest.xml文件内容:
Xml代码
# <?xml version="1.0" encoding="utf-8"?>
# <manifest xmlns:android="http://schemas.android.com/apk/res/android"
# package="cc.androidos.sms"
# android:versionCode="1"
# android:versionName="1.0.0">
# <application android:icon="@drawable/icon" android:label="@string/app_name">
# <activity android:name=".StartUp"
# 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=".BootReceiver">
# <intent-filter>
# <action android:name="android.intent.action.BOOT_COMPLETED" />
# </intent-filter>
# </receiver>
# <service android:name=".StartService"/>
# </application>
# </manifest>
# <?xml version="1.0" encoding="utf-8"?>
# <manifest xmlns:android="http://schemas.android.com/apk/res/android"
# package="cc.androidos.sms"
# android:versionCode="1"
# android:versionName="1.0.0">
# <application android:icon="@drawable/icon" android:label="@string/app_name">
# <activity android:name=".StartUp"
# 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=".BootReceiver">
# <intent-filter>
# <action android:name="android.intent.action.BOOT_COMPLETED" />
# </intent-filter>
# </receiver>
# <service android:name=".StartService"/>
# </application>
# </manifest> 要启动的Activity类:
Java代码
# package cc.androidos.sms;
# import android.app.Activity;
# import android.os.Bundle;
# public class StartUp extends Activity {
# /** Called when the activity is first created. */
# @Override
# public void onCreate(Bundle savedInstanceState) {
# super.onCreate(savedInstanceState);
# setContentView(R.layout.main);
# }
# }
# package cc.androidos.sms;
# import android.app.Activity;
# import android.os.Bundle;
# public class StartUp extends Activity {
# /** Called when the activity is first created. */
# @Override
# public void onCreate(Bundle savedInstanceState) {
# super.onCreate(savedInstanceState);
# setContentView(R.layout.main);
# }
# } Receiver类:系统启动后接受信息的类
Java代码
# package cc.androidos.sms;
# import android.app.Activity;
# import android.app.PendingIntent;
# import android.content.BroadcastReceiver;
# import android.content.Context;
# import android.content.Intent;
# import android.net.Uri;
# import android.util.Log;
# public class BootReceiver extends BroadcastReceiver
# {
# @Override
# public void onReceive( Context context, Intent intent )
# {
# if(intent.getAction().equals( Intent.ACTION_BOOT_COMPLETED )){
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Intent i = new Intent(context,StartUp.class);
# i.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
# //使用Receiver直接启动Activity时候需要加入此flag,否则系统会出现异常
# context.startActivity( i );
#
# }
# }
# }
# package cc.androidos.sms;
# import android.app.Activity;
# import android.app.PendingIntent;
# import android.content.BroadcastReceiver;
# import android.content.Context;
# import android.content.Intent;
# import android.net.Uri;
# import android.util.Log;
# public class BootReceiver extends BroadcastReceiver
# {
# @Override
# public void onReceive( Context context, Intent intent )
# {
# if(intent.getAction().equals( Intent.ACTION_BOOT_COMPLETED )){
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Intent i = new Intent(context,StartUp.class);
# i.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
# //使用Receiver直接启动Activity时候需要加入此flag,否则系统会出现异常
# context.startActivity( i );
#
# }
# }
# } 第一个运行完成后,关闭手机模拟器或者手机,然后启动手机操作系统,启动完成后StartUp Activity会自动运行。
1、需要BroadcastReceiver
2、使用interfilter中的action:android.intent.action.BOOT_COMPLETED //当启动手机系统启动完成后就启动此Receiver
功能:当手机系统启动完成后,直接启动某个程序或者Activity,这里直接启动某个程序
一下是代码分析:
AndroidManifest.xml文件内容:
Xml代码
# <?xml version="1.0" encoding="utf-8"?>
# <manifest xmlns:android="http://schemas.android.com/apk/res/android"
# package="cc.androidos.sms"
# android:versionCode="1"
# android:versionName="1.0.0">
# <application android:icon="@drawable/icon" android:label="@string/app_name">
# <activity android:name=".StartUp"
# 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=".BootReceiver">
# <intent-filter>
# <action android:name="android.intent.action.BOOT_COMPLETED" />
# </intent-filter>
# </receiver>
# <service android:name=".StartService"/>
# </application>
# </manifest>
# <?xml version="1.0" encoding="utf-8"?>
# <manifest xmlns:android="http://schemas.android.com/apk/res/android"
# package="cc.androidos.sms"
# android:versionCode="1"
# android:versionName="1.0.0">
# <application android:icon="@drawable/icon" android:label="@string/app_name">
# <activity android:name=".StartUp"
# 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=".BootReceiver">
# <intent-filter>
# <action android:name="android.intent.action.BOOT_COMPLETED" />
# </intent-filter>
# </receiver>
# <service android:name=".StartService"/>
# </application>
# </manifest> 要启动的Activity类:
Java代码
# package cc.androidos.sms;
# import android.app.Activity;
# import android.os.Bundle;
# public class StartUp extends Activity {
# /** Called when the activity is first created. */
# @Override
# public void onCreate(Bundle savedInstanceState) {
# super.onCreate(savedInstanceState);
# setContentView(R.layout.main);
# }
# }
# package cc.androidos.sms;
# import android.app.Activity;
# import android.os.Bundle;
# public class StartUp extends Activity {
# /** Called when the activity is first created. */
# @Override
# public void onCreate(Bundle savedInstanceState) {
# super.onCreate(savedInstanceState);
# setContentView(R.layout.main);
# }
# } Receiver类:系统启动后接受信息的类
Java代码
# package cc.androidos.sms;
# import android.app.Activity;
# import android.app.PendingIntent;
# import android.content.BroadcastReceiver;
# import android.content.Context;
# import android.content.Intent;
# import android.net.Uri;
# import android.util.Log;
# public class BootReceiver extends BroadcastReceiver
# {
# @Override
# public void onReceive( Context context, Intent intent )
# {
# if(intent.getAction().equals( Intent.ACTION_BOOT_COMPLETED )){
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Intent i = new Intent(context,StartUp.class);
# i.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
# //使用Receiver直接启动Activity时候需要加入此flag,否则系统会出现异常
# context.startActivity( i );
#
# }
# }
# }
# package cc.androidos.sms;
# import android.app.Activity;
# import android.app.PendingIntent;
# import android.content.BroadcastReceiver;
# import android.content.Context;
# import android.content.Intent;
# import android.net.Uri;
# import android.util.Log;
# public class BootReceiver extends BroadcastReceiver
# {
# @Override
# public void onReceive( Context context, Intent intent )
# {
# if(intent.getAction().equals( Intent.ACTION_BOOT_COMPLETED )){
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Log.d( ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", "boot start................" );
# Intent i = new Intent(context,StartUp.class);
# i.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
# //使用Receiver直接启动Activity时候需要加入此flag,否则系统会出现异常
# context.startActivity( i );
#
# }
# }
# } 第一个运行完成后,关闭手机模拟器或者手机,然后启动手机操作系统,启动完成后StartUp Activity会自动运行。