我正在尝试使用C2DM显示推送通知消息。如果是Toast消息,那么它显示正常。但是,当我尝试状态栏通知或某些AlertDialog时,它无法正常工作。而且我也试图开始接收消息的另一个活动,然后它也没有工作。我尝试了两种类型的上下文:
但没有任何结果能达到预期效果。
以下是StatusBar Notification,AlertDialog的代码,以及启动另一项活动。
//testing for dialog
AlertDialog.Builder dialog = new AlertDialog.Builder( C2dmRegistration.obj.getBaseContext());
dialog.setMessage("New message : "+message);
dialog.show();
dialog.setNeutralButton("View", new OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which)
{
}
});
//testing for ststus bar notifications
NotificationManager objNotfManager=(NotificationManager) C2dmRegistration.obj.getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
int icon = R.drawable.logo;
CharSequence tickerMessage = "Hello";
long when= System.currentTimeMillis();
Notification objNotf = new Notification(icon,tickerMessage,when);
//Context context = getApplicationContext();
CharSequence title = "Welcome";
CharSequence mesage = "have a nice day";
Intent NotifIntent = new Intent(context,NotificationShow.class);
PendingIntent contentIntent = PendingIntent.getActivity( C2dmRegistration.obj.getApplicationContext(), 0, NotifIntent, 0);
objNotf.setLatestEventInfo( C2dmRegistration.obj.getApplicationContext(), title, mesage, contentIntent);
objNotfManager.notify(1,objNotf);
//testing for new activity
Intent startActivity = new Intent();
startActivity.setClass( C2dmRegistration.obj.getApplicationContext(), NotificationShow.class);
startActivity.setAction(NotificationShow.class.getName());
startActivity.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
startActivity.putExtra("Title", "Hello");
startActivity.putExtra("Message", message);
context.startActivity(startActivity);
我将不胜感激任何帮助...... 谢谢......
答案 0 :(得分:0)
首先,带有上下文的静态变量不是可行的方法。 C2DM子系统能够在未启动主活动的情况下启动应用程序进程。因此静态var不会被初始化。
根据我的经验,您通过onReceive()
获得的上下文完全没问题。但是,状态栏通知非常挑剔,并且在出现细微错误时不会抛出异常。我建议你从活动中调试那些(例如,在onCreate中弹出一个),然后将代码移到C2DM接收器中。
图像R.drawable.logo
实际上是否存在于项目中?我曾经有一个令人沮丧的调试会议,那是关于缺少通知图标......