从一个服务通知 [英] Notification from a service

查看:142
本文介绍了从一个服务通知的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想收到C2DM消息时显示一个简单的通知。服务提供的用户界面,但仍是主线程上运行。我见过的人声称可以创建和服务显示通知。

I'm trying to display a simple notification when a C2DM message is received. Services provide to UI but still run on the main thread. I've seen people claim you can create and display Notifications from a service.

 @Override
public void onMessage(Context context, Intent intent) {
    Log.w("Messsage","Message Received");
    Bundle extras = intent.getExtras();
    if (extras != null) {
        String payload = (String) extras.get("test");
        createNotification(context,payload);





    }
}

private void createNotification(Context context, String message){
    NotificationManager notificationmanager =  (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    Notification notification = new Notification(R.drawable.default1,message,System.currentTimeMillis());


    notificationmanager.notify(0,notification);
}

}

06-15 15:39:13.580: E/AndroidRuntime(11603): FATAL EXCEPTION: IntentService    [stp.chrome@gmail.com]
06-15 15:39:13.580: E/AndroidRuntime(11603): java.lang.IllegalArgumentException:   contentView required: pkg=com.upmc id=0 notification=Notification(contentView=null vibrate=null,sound=null,defaults=0x0,flags=0x0)
06-15 15:39:13.580: E/AndroidRuntime(11603):    at android.os.Parcel.readException(Parcel.java:1331)
06-15 15:39:13.580: E/AndroidRuntime(11603):    at android.os.Parcel.readException(Parcel.java:1281)
06-15 15:39:13.580: E/AndroidRuntime(11603):    at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:299)
06-15 15:39:13.580: E/AndroidRuntime(11603):    at android.app.NotificationManager.notify(NotificationManager.java:124)
06-15 15:39:13.580: E/AndroidRuntime(11603):    at android.app.NotificationManager.notify(NotificationManager.java:103)
06-15 15:39:13.580: E/AndroidRuntime(11603):    at com.upmc.C2DMReceiver.createNotification(C2DMReceiver.java:80)
06-15 15:39:13.580: E/AndroidRuntime(11603):    at com.upmc.C2DMReceiver.onMessage(C2DMReceiver.java:66)
06-15 15:39:13.580: E/AndroidRuntime(11603):    at com.google.android.c2dm.C2DMBaseReceiver.onHandleIntent(C2DMBaseReceiver.java:108)
06-15 15:39:13.580: E/AndroidRuntime(11603):    at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:65)
06-15 15:39:13.580: E/AndroidRuntime(11603):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-15 15:39:13.580: E/AndroidRuntime(11603):    at android.os.Looper.loop(Looper.java:137)
06-15 15:39:13.580: E/AndroidRuntime(11603):    at android.os.HandlerThread.run(HandlerThread.java:60)

我不知道为什么这个异常被抛出。

I have no idea why this exception is being thrown.

推荐答案

首先,异常被抛出,因为你创建一个通知有引用它(内容查看属性设置为null)没有视图对象。你要叫<一href="http://developer.android.com/reference/android/app/Notification.html#setLatestEventInfo%28android.content.Context,%20java.lang.CharSequence,%20java.lang.CharSequence,%20android.app.PendingIntent%29">setLatestEventInfo前显示通知。

First, the exception is thrown because you create a notification which has no view object referenced to it (contentView attribute is set to null) . You have to call setLatestEventInfo before showing the notification.

二,您使用的构造函数是<一个href="http://developer.android.com/reference/android/app/Notification.html#Notification%28int,%20java.lang.CharSequence,%20long%29">de$p$pcated.请使用类<一href="http://developer.android.com/reference/android/app/Notification.Builder.html">Notification.Builder创建通知。如果你支持Android&LT; API级别11,您可以使用类<一href="http://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html">NotificationCompat.Builder从支持库。

Second, the constructor you're using is deprecated. Please use the class Notification.Builder for creating notifications. If you support Android < API level 11, you can use the class NotificationCompat.Builder from the support library.

三,是的,它可以从一个正在运行的服务创建的通知。

Third, yes it is possible to create notifications from a running service.

这篇关于从一个服务通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆