我正在尝试从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调用此服务。
答案 0 :(得分:4)
AlarmReceiver
正在调用startActivity()
,而不是startService()
。您使用startService()
启动服务;您可以使用startActivity()
开始活动。
此外,服务不需要(或使用,AFAIK)FLAG_ACTIVITY_NEW_TASK
。
答案 1 :(得分:1)
在Android中使用C2DM进行推送通知是好的......这可能是您的解决方案......