【发布时间】:2014-09-16 08:56:19
【问题描述】:
我已经制作了一个广播接收器,它会在从服务器收到消息时发出通知。 当我点击通知时,它会打开预期的活动并更新消息列表。
我的问题是如何在活动打开时收到广播时更新消息列表(触发事件)? (就像他们在“WhatsApp”中所做的那样,他们不会在聊天时发送通知,而是更新消息列表)。
我的广播接收器如下:
public class NotifReceiver extends BroadcastReceiver {
private Context context;
private String notifTitle,notifStatus;
public static int NOTIF_ID = 54321;
@Override
public void onReceive(Context context, Intent intent) {
this.context = context;
if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
context.startService(new Intent(context, NotifService.class));
Log.i("Aditya", "Background Service of SamajApp Started");
}
if(intent.getAction().equals("Aditya.Notification")){
showNotif();
}
}
public void showNotif(){
NotificationManager notifManager = NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent i = new Intent(context, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pIntent = PendingIntent.getActivity(context, 0, i, 0);
Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notif = new NotificationCompat.Builder(context);
notif.setContentTitle("SamajApp");
notif.setContentText(notifTitle);
notif.setSmallIcon(R.drawable.logo);
notif.setSound(soundUri);
notif.setContentIntent(pIntent);
notifManager.notify(NOTIF_ID, notif.build());
}
}
我已经在清单中注册了它,它运行良好。
我的MainActivity如下:
public class MainActivity extends Activity {
private ListView mListView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mListView = (ListView) findViewById(R.id.listViewHome);
updateList();
}
//MsgListAdapter is my custom Adapter to populate Listview,
private void updateList(){
registerForContextMenu(mListView);
Vector<HashMap<String, String>> list = getMsgListfromDB(); //gets message list from database
Vector<HashMap<String, byte[]>> blobList = getBlobListfromDB(); //gets blob list from db.
ad = new MsgListAdapter(getApplicationContext(), list,blobList,R.layout.listrow,
new String[] { "MsgCat", "MsgDt_Simp","by","FlagUnread"},
new int[] {R.id.textViewCat, R.id.textViewDateTime,R.id.textViewBy},
new int[] {R.id.imageViewMsgImg,R.id.imageViewCatImg},R.id.imageViewUnreaddr);
mListView.setAdapter(ad);
}
}
对此的任何帮助将不胜感激。 谢谢。
【问题讨论】:
标签: android android-notifications