从BroadcastReceiver调用后台服务

时间:2010-05-24 09:56:27

标签: android

我正在尝试从BroadcastReceiver类调用推送通知后台服务,但我的应用程序崩溃了。代码如下:

public class AlarmReceiver extends BroadcastReceiver {

    static int count=1;

    @Override
    public void onReceive(Context context, Intent intent) {

        Intent myIntent=new Intent(context,NotifyService.class);
        myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        context.startActivity(myIntent);  
    }
} 

清单条目:

<receiver android:name=".AlarmReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>
<service android:name=".NotifyService">
</service>

错误:

05-24 15:17:00.042: ERROR/AndroidRuntime(424): Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.android.alarm/com.android.alarm.NotifyService}; have you declared this activity in your AndroidManifest.xml?

当我通过活动调用此服务时,它正在运行,但我的目标是从BroadcastReceiver调用此服务。

2 个答案:

答案 0 :(得分:4)

AlarmReceiver正在调用startActivity(),而不是startService()。您使用startService()启动服务;您可以使用startActivity()开始活动。

此外,服务不需要(或使用,AFAIK)FLAG_ACTIVITY_NEW_TASK

答案 1 :(得分:1)

在Android中使用C2DM进行推送通知是好的......这可能是您的解决方案......