单击通知不启动由服务创建的PendingIntent

时间:2014-03-30 04:38:17

标签: android android-service android-notifications android-pendingintent

因此,该代码在开始在前台启动之后从我的服务内部运行。这也会创建将保持在那里的通知。我有很多问题/疑问:

1)点击通知只会打开应用信息,而不是我的PendingIntent。

2)我的内容标题和文字没有设置。我得到了#34; MyApp正在运行。触摸以获取更多信息或停止活动。"显示在通知中,而不是" TEST1 TEST2"。

3)note.flags | = Notification.FLAG_NO_CLEAR似乎多余。之前我对它进行了评论,在我尝试清除所有通知后,通知仍会保留在那里。

4)使用notificationManager.notify实际上似乎删除了我之前设置的通知。实际上没有设置新通知。所以我的应用程序在执行此行后没有任何通知。

private void setupStartForeground() {   

    int id = 11;

    Intent intent = new Intent(this, MyActivity.class);     
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_NEW_TASK);      

    PendingIntent pi = PendingIntent.getActivity(this, 0, intent, 0);

    Notification note = new Notification.Builder(this)
            .setContentTitle("TEST1")
            .setContentText("TEST2")
            .setContentIntent(pi)
            .build();
    note.flags|=Notification.FLAG_NO_CLEAR;

    startForeground(id, note);

    //NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    //notificationManager.notify(id, note);
}

2 个答案:

答案 0 :(得分:6)

我遇到了同样的问题,并通过将正确的资源设置为setSmallIcon来解决问题。设置图标是必需的,如果不这样做,则标题='我的应用'和text ='MyApp的默认通知正在运行。触摸以获取更多信息或停止活动。被展示。这是我使用的代码:

       Resources res   = this.getResources();
    String pkgName  = this.getPackageName();
    int resId;
    resId = res.getIdentifier("myIcon", "drawable", pkgName);
    int resId = 
    Notification note = new Notification.Builder(this)
        .setSmallIcon(resId)
        .setContentTitle("TEST1")
        .setContentText("TEST2")
        .setContentIntent(pi)
        .build();

答案 1 :(得分:0)

好的......所以我使用了这里的代码,第49-72行。 https://github.com/commonsguy/cw-android/blob/master/Notifications/FakePlayer/src/com/commonsware/android/fakeplayerfg/PlayerService.java

它已弃用(如不使用Notification.Builder),但它可以正常工作!我获得了正确的标题,点击通知即可启动我的活动。

如果有人知道的话,我仍然更喜欢不赞成这样做的方式。