android - 通知将无法使用通知管理器和 notification.builder

标签 android notifications broadcastreceiver notificationmanager

我是 Android 开发的新手,我正在为在我的应用程序中实现通知而苦苦挣扎。 基本上问题是通知不会出现(一开始就出现了),我不知道为什么,我在这里和其他论坛上查看了其他通知问题,但仍然没有设法解决矿。 它变得非常令人沮丧,我将它发布在这里作为最后的手段,因为我已经厌倦了猜测出了什么问题...... 这是我的代码,我没有收到任何错误,但通知根本不会显示。 任何帮助将不胜感激。

无论如何,这是代码,我已经在 list 和所有内容中声明了 brodcastReciver。

谢谢,埃拉德

public class NotificationService extends BroadcastReceiver {

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

    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Activity.NOTIFICATION_SERVICE);

    PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
            new Intent(context, SplashTest.class), 0);
    int mNotificationId = 001;

    Notification notification = new Notification.Builder(context)

            .setContentTitle("Title")
            .setContentText("Text")
            .setSmallIcon(R.drawable.notification_icon)
            .setContentIntent(contentIntent)
            .build();

    notificationManager.notify(mNotificationId, notification);

}


更新

非常感谢! 我在一段时间后使用 AlarmManager 调用通知,此通知应打开一个 Activity 。 Alarammanager 似乎有效,因为当我尝试调用不同的 Activity (而不是通知)时,它会在正确的时间打开它,但是当我调用通知时,什么也没有发生。

我在尝试实现您的代码时遇到了一些错误,我做错了什么?

    public class NewNotificationService extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            int mNotificationId = 0015;
            int icon = R.drawable.notification_icon;

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
    .setSmallIcon(R.drawable.notification_icon)
    .setContentTitle("My notification")
    .setContentText("Hello World!");

Intent resultIntent = new Intent(this, SplashTest.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(SplashTest.class); 
stackBuilder.addNextIntent(resultIntent);

PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(
                                    0, PendingIntent.FLAG_UPDATE_CURRENT );
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

mNotificationManager.notify(0, mBuilder.build());

logcat 没有显示任何内容,但控制台给出了这个:

    [2013-06-25 23:45:30 - ddmlib] Broken pipe
java.io.IOException: Broken pipe
    at sun.nio.ch.FileDispatcher.write0(Native Method)
    at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:29)
    at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:69)
    at sun.nio.ch.IOUtil.write(IOUtil.java:40)
    at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:336)
    at com.android.ddmlib.JdwpPacket.writeAndConsume(JdwpPacket.java:213)
    at com.android.ddmlib.Client.sendAndConsume(Client.java:607)
    at com.android.ddmlib.HandleHeap.sendREAQ(HandleHeap.java:348)
    at com.android.ddmlib.Client.requestAllocationStatus(Client.java:453)
    at com.android.ddmlib.DeviceMonitor.createClient(DeviceMonitor.java:835)
    at com.android.ddmlib.DeviceMonitor.openClient(DeviceMonitor.java:803)
    at com.android.ddmlib.DeviceMonitor.processIncomingJdwpData(DeviceMonitor.java:763)
    at com.android.ddmlib.DeviceMonitor.deviceClientMonitorLoop(DeviceMonitor.java:652)
    at com.android.ddmlib.DeviceMonitor.access$100(DeviceMonitor.java:44)
    at com.android.ddmlib.DeviceMonitor$3.run(DeviceMonitor.java:580)

最佳答案

According to the documentation ,你可以尝试这样的事情

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
    .setSmallIcon(R.drawable.notification_icon)
    .setContentTitle("My notification")
    .setContentText("Hello World!");

Intent resultIntent = new Intent(this, ResultActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addParentStack(ResultActivity.class); 
stackBuilder.addNextIntent(resultIntent);

PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(
                                    0, PendingIntent.FLAG_UPDATE_CURRENT );
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

mNotificationManager.notify(mId, mBuilder.build());

关于android - 通知将无法使用通知管理器和 notification.builder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17294032/

相关文章:

android - Android Framework 中的 cpp 方法所花费的时间

android - 用于安装多个 Android 应用程序的 Windows 脚本

Android - 向死线程上的处理程序发送消息,Toast 错误

swift - 如何从 GET 请求 Swift 获取通知

android - 当应用程序最初关闭时,后续(即第一之后)通知挂起 Intent 不会启动 Activity

java - Android Studio 中 Android 库和 Java 库的区别

python - Python 和 WCF 之间的通信

java - 来自 Java 的 Windows 10 通知

android - 仅当您显式调用 finish() 时才会调用 onDestroy 吗?或者有什么异常(exception)吗?

java - 没有找到处理来自广播接收器的 Intent 的 Activity