我正在尝试注册我的服务以在手机启动时启动。
我在我的服务类中设置了一个 BOOT_COMPLETED BroadcastReciever:
public int onStartCommand(Intent intent, int flags, int startId)
{
startService(intent);
_bootCompletedReciever = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
Log.d(TAG, "Got boot completed");
}
};
IntentFilter filter = new IntentFilter("android.intent.action.BOOT_COMPLETED");
registerReceiver(_bootCompletedReciever, filter);
return START_NOT_STICKY;
}
但是它没有被调用。我在清单中设置了权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
你知道我在手机启动时让这个广播在我的服务中触发时缺少什么(没有在清单中注册广播)吗?
回答
在这种情况下,我必须使用 XML 来注册一个在启动时调用我的服务的类:
public class BootBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
Intent service = new Intent(context, S_GPS.class);
context.startService(service);
}
}
在清单中:
<receiver android:name=".BroadcastReceivers.BootBroadcastReceiver" android:enabled="true" android:exported="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>