2

我是安卓新手,请耐心等待!

最后,我通过 GCM 从一个简单的 WCF REST API 获得了我的 XML 结果,希望使用其有效负载构建一个简单的通知。

@Override
protected void onMessage(Context arg0, Intent arg1) {

    String message = arg1.getStringExtra("payload");
    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

    Notification note = new Notification();
    note.tickerText=message;
    note.when=System.currentTimeMillis();
    note.defaults |= Notification.DEFAULT_ALL;

    notificationManager.notify(new Random().nextInt(), note);

}

我听到了默认通知声音,但我的栏没有显示任何内容,我错过了什么


编辑我

笔记:

<uses-sdk
    android:minSdkVersion="14"
    android:targetSdkVersion="17" /> 

我尝试了 Jeeter关于使用构建器构建通知的建议,但是需要一个 MINIMUM API 16,这并不好 + 我的 Galaxy Note 测试设备是 4.0.4,即 API 15!

@Override
protected void onMessage(Context arg0, Intent arg1) {

    String Message = arg1.getStringExtra("payload");
    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

    notificationManager.notify(
            new Random().nextInt(),
            new Notification.Builder(this)
                    .setContentTitle(Message)
                    .setContentText(Message).build());

}

public Notification build()
API 级别 16 中添加
结合所有已设置的选项,并返回一个新的 Notification 对象。


编辑二

我尝试了关于使用 NotificationCompat 构建器的 A--C建议。

@Override
protected void onMessage(Context arg0, Intent arg1) {

    String Message = arg1.getStringExtra("payload");
    NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

            notificationManager.notify(
            new Random().nextInt(),
            new NotificationCompat.Builder(this).setContentTitle("Message")
                    .setWhen(System.currentTimeMillis())
                    .setDefaults(Notification.DEFAULT_ALL)
                    .setContentText(Message).build());

}

没有错误但没有任何改变,我仍然听到没有外观的声音,但是消息到达了 onMessage 方法。

4

1 回答 1

1

Android 需要设置一个小图标才能实际显示您的状态栏通知。

文档中,这些是要求:

Notification 对象必须包含以下内容:

• 一个小图标,由 setSmallIcon() 设置

• 标题,由 setContentTitle() 设置

• 详细文本,由 setContentText() 设置

此外,较旧的平台(Gingerbread 及更低版本)需要传递一个PendingIntent(称为文档中的内容IntentNotification)才能显示。这是平台的限制。

根据您显示的Notification方式,如果不设置contentIntent,应用程序将崩溃,并且堆栈跟踪将非常清楚原因。

使用NotificationCompat.Builder,很容易通过 设置内容IntentNotificationCompat.Builder#setContentIntent()

于 2013-01-27T03:22:28.783 回答