【发布时间】:2014-12-09 14:48:27
【问题描述】:
我正在创建包含具有播放/暂停图标的通知的应用程序,其中。当只有一个通知只有一个通知 ID 时,它可以完美运行,它仅通过一个通知 ID 更改播放/暂停图标,但存在多个通知的问题。当有多个通知时,每个通知都有播放/暂停图标。当我从其中一个通知中单击播放/暂停图标时,它只会更改通知堆栈中的顶部通知图标。我知道这个问题是由于它在单击任何通知时获得的通知 ID。我想在单击播放/暂停图标时获取所有通知的 ID。我已经尝试过对 pendingIntent 内容进行一些更改,但尚未找到一些确切的解决方案。
我想知道,有没有办法通过点击播放/暂停图标来获取通知的通知ID?,所以我可以通过通知ID更改图标或更新通知。需要通过那里的通知 id 更新通知。
我已使用远程视图在通知中获取服装布局。代码如下
通知代码
RemoteViews mRemoteViews1 = null;
PendingIntent pendingIntent = null;
PendingIntent pendingIntent1 = null;
PendingIntent pendingIntent2 = null;
PendingIntent pendingIntent3 = null;
PendingIntent pendingIntent4 = null;
PendingIntent pendingIntent5 = null;
if (mRemoteViews1 == null) {
Log.d("LOG", "mRemoteViews is null");
mRemoteViews1 = new RemoteViews(getPackageName(),
R.layout.custom_notification);
} else {
if (mState == palyer.Paused || mState == palyer.Stopped) {
try {
Log.e("LOG", "State.Paused || State.Stopped");
mRemoteViews1.setImageViewResource(R.id.playpush,
R.drawable.playdetailfornoti); // play icon
} catch (Exception e) {}
} else if (mState == palyer.Playing) {
try {
Log.e("LOG", "State.Playing");
mRemoteViews1.setImageViewResource(R.id.playpush,
R.drawable.pushdetail); // pushicon
} catch (Exception e) {}
} else if (mState == palyer.Retrieving) {
try {
Log.e("LOG", "else Retrieving");
mRemoteViews1.setImageViewResource(R.id.playpush,
R.drawable.playdetailfornoti); // play icon
} catch (Exception e) {}
}
else {
try {
Log.e("LOG", "else");
mRemoteViews1.setImageViewResource(R.id.playpush,
R.drawable.pushdetail); // pushicon
} catch (Exception e) {}
}
}
Intent intent = new Intent(ACTION_TOGGLE_PLAYBACK);
Intent intent1 = new Intent(CLOSE_PUSH_NOTIFICATION);
Intent intent2 = new Intent(ACTION_NEXT);
Intent intent3 = new Intent(ACTION_PREVIOUS);
Intent intent4 = new Intent(ACTION_STOP);
Intent intent5 = new Intent(ACTION_PLAY_NOTIFICATION_START);
Intent newintent = new Intent(this, Splace.class);
newintent.putExtra("newsId",_id);
newintent.putExtra("message",title);
newintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_SINGLE_TOP);
newintent.setAction("actionstring" + System.currentTimeMillis());
pendingIntent = PendingIntent.getService(getApplicationContext(),
REQUEST_CODE_STOP, intent, PendingIntent.FLAG_UPDATE_CURRENT);
pendingIntent1 = PendingIntent.getService(getApplicationContext(), 0,
intent1, 0);
pendingIntent2 = PendingIntent.getService(getApplicationContext(),
REQUEST_CODE_STOP, intent2, PendingIntent.FLAG_UPDATE_CURRENT);
pendingIntent3 = PendingIntent.getService(getApplicationContext(),
REQUEST_CODE_STOP, intent3, PendingIntent.FLAG_UPDATE_CURRENT);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
newintent, 0);
pendingIntent4 = PendingIntent.getService(getApplicationContext(),
REQUEST_CODE_STOP, intent4, PendingIntent.FLAG_UPDATE_CURRENT);
pendingIntent5 = PendingIntent.getService(getApplicationContext(),
REQUEST_CODE_STOP, intent5, PendingIntent.FLAG_UPDATE_CURRENT);
mRemoteViews1.setTextViewText(R.id.playertitle,
MusicList.CurrentNotificationEntity.scrape_title);
mRemoteViews1
.setTextViewText(R.id.playerapaer, Base
.getNewsPaperName(Base.sharedPref.getString(
MusicList.CurrentNotificationEntity.newspaperID,
"Palpal")));
mRemoteViews1.setOnClickPendingIntent(R.id.forward, pendingIntent2);
mRemoteViews1.setOnClickPendingIntent(R.id.backword, pendingIntent3);
mRemoteViews1.setOnClickPendingIntent(R.id.playertitle, contentIntent);
mRemoteViews1.setOnClickPendingIntent(R.id.playerapaer, contentIntent);
mRemoteViews1.setOnClickPendingIntent(R.id.playerimage, contentIntent);
mRemoteViews1.setOnClickPendingIntent(R.id.playpush, pendingIntent);
mRemoteViews1.setOnClickPendingIntent(R.id.close, pendingIntent1);
Notification mNotification1 = new NotificationCompat.Builder(
getApplicationContext())
.setSmallIcon(R.drawable.ic_launcher)
.setWhen(System.currentTimeMillis())
.setPriority(Notification.PRIORITY_HIGH)
.setDeleteIntent(pendingIntent1)
.setAutoCancel(true)
.setContent(mRemoteViews1).setOngoing(false).build();
mNotificationManager.notify(Base.currentNotificationNo, mNotification1);
请帮助我提前谢谢
【问题讨论】:
标签: android notifications remoteview