為了讓Service隨應用系統啟動自動運行,可以讓BroadcastReceiver監聽Action為ACTION_BOOT_COMPLETED常量的Intent,然后在BroadcastReceiver中啟動特定的Service即可。
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.sax.StartElementListener;
public class LaunchReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Intent tIntent = new Intent(context, LaunchService.class);
//啟動指定Service
context.startService(tIntent);
}
}
實現自動運行的關鍵是要讓LaunchReceiver監聽系統開機發出的廣播,因此需要在AndroidManifest.xml文件中采用如下代碼配置該BroadcastReceiver:
<!-- 定義一個BroadcastReceiver,監聽系統開機廣播 -->
<receiver android:name=".LaunchReceiver">
<intent-filter >
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
除此之外,為了讓程序能訪問系統開機事件,還需要為應用程序增加權限:
<!-- 授予應用程序訪問系統開機事件的權限 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
至於程序中用到的LaunchService,則可以是用戶開發的Service,既可是監聽用戶來電的Service,也可以是監聽用戶短信、攔截黑名單電話等的Service,