因此,该代码在开始在前台启动之后从我的服务内部运行。这也会创建将保持在那里的通知。我有很多问题/疑问:
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);
}
答案 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),但它可以正常工作!我获得了正确的标题,点击通知即可启动我的活动。
如果有人知道的话,我仍然更喜欢不赞成这样做的方式。