Android——开机启动功能(Service和BroadcastReceiver)
BroadcastReceiver(广播接收器):发出广播让服务器去接收
BootReceiver.java
package com.example.chenshuai.test321; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class BootReceiver extends BroadcastReceiver { public BootReceiver() { Log.e("TAG","构造开机完成广播接收器"); } @Override public void onReceive(Context context, Intent intent) { // TODO: This method is called when the BroadcastReceiver is receiving // an Intent broadcast. //throw new UnsupportedOperationException("Not yet implemented"); //启动服务 context.startService(new Intent(context,BootService.class)); Log.e("TAG", "广播接收器自动启动Service"); } }
Service:接收广播传过来的意图
BootService.java
package com.example.chenshuai.test321; import android.app.Service; import android.content.Intent; import android.os.IBinder; import android.util.Log; public class BootService extends Service { public BootService() { } @Override public IBinder onBind(Intent intent) { // TODO: Return the communication channel to the service. //throw new UnsupportedOperationException("Not yet implemented"); return null; } @Override public void onCreate() { super.onCreate(); Log.e("TAG","服务自动启动了"); } }
在manifest.xml中调至相同频率/同时设置权限
<!--接收开机完成的广播权限--> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <service android:name=".BootService" android:enabled="true" android:exported="true" /> <receiver android:name=".BootReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver>