我通过NotificationManager
从BroadcastReceiver
显示通知,但如果用户触摸通知,则不会发生任何情况。如果我从视图创建通知,那么在触摸通知时,包含的活动将处于最前面。Android:如何对通知触摸事件做出反应?
如何显示特定活动/视图或以其他方式反应用户触摸通知?
我通过NotificationManager
从BroadcastReceiver
显示通知,但如果用户触摸通知,则不会发生任何情况。如果我从视图创建通知,那么在触摸通知时,包含的活动将处于最前面。Android:如何对通知触摸事件做出反应?
如何显示特定活动/视图或以其他方式反应用户触摸通知?
当您从NotificationManager接收到广播消息时,您必须创建一个新的PendingIntent,当用户触摸正确的通知时将触发该PendingIntent。现在,PendingIntent必须有一个内部Intent,它将执行一个动作,例如启动一个活动。
对在广播接收器调用一个辅助方法你“的onReceive”的方法,如“showProximityAlertNotification”
@Override
public void onReceive(Context context, Intent intent) {
showProximityAlertNotification();
}
//now when the user touch the notification on the notification bar, an activity named //"ItemListActivity" will be launched. You can put an IntentFilter, a Category, an Action
//to perform any different operations within your activity
private void showProximityAlertNotification(){
String titulo = getString(R.string.notification_proximity_alerts_fired_title);
String tickerText = getString(R.string.notification_proximity_alerts_fired_ticker);
String contextText = getString(R.string.notification_proximity_alerts_fired_content);
int icon = R.drawable.wk_logo;
long when = System.currentTimeMillis();
Notification notification = new Notification(icon, tickerText, when);
//define the actions to perform when user touch the notification
Intent launchApp = new Intent(getApplicationContext(), ItemListActivity.class);
launchApp.putExtra("com.xxxxxxx.xxxxxxxxx.bean.Item", "anyObjectYouWant");
launchApp.setAction("VIEW_DETAILS_PROPERTY");
PendingIntent launchNotification = PendingIntent.getActivity(getApplicationContext(), 0, launchApp, 0);
notification.setLatestEventInfo(getApplicationContext(), titulo, contextText, launchNotification);
notificationManager.notify(NOTIFICATION_ID_PROXIMITY_ALERT_FIRED, notification);
}
如果您正在执行新推出的活动,并希望取消发布通知,只是这样做:
String notManagerName = Context.NOTIFICATION_SERVICE;
NotificationManager notificationManager = (NotificationManager) getSystemService(notManagerName);
notificationManager.cancel(ProximityAlerts.NOTIFICATION_ID_PROXIMITY_ALERT_FIRED);
欢呼
在你的清单文件添加此
android:name=".QuadDealsPushReceiver"
<application android:label="@string/app_name" android:name=".QuadDealsPushReceiver"
android:theme="@style/MyTheme" android:debuggable="true">
然后创建新的活动,如果您触摸通知会重定向说YourActivityname.class粘贴此code..now ..
public class QuadDealsPushReceiver extends Application {
public static String apid=null;
public void onCreate(){
AirMail am = AirMail.getInstance();
am.acceptPush(this, new PushReceiver() {
@Override
public void onReceive(String message, String payload){
Log.d("push", "Got message '" + message +"' and payload '" + payload + "'");
}
@Override
public void onClick(String message, String payload){
Intent intent = new Intent("android.intent.action.MAIN");
intent.setClass(QuadDealsPushReceiver.this, YourActivityname.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
QuadDealsPushReceiver.this.startActivity(intent);
}
});
am.setAPIDReceiver(this, new APIDReceiver() {
@Override
public void onReceive(String apids, boolean valid){
apid=apids;
if(valid){
Log.d("push", "Got apid: " + apid);
} else {
Log.d("push", "Application registration invalid!"+ apid);
}
}
@Override
public void onAirMailInstallRefusal() {
QuadMain.register = false;
Log.d("push", "AirMail Install Refused!");
}
});
}
}
@Venaktesh:我相信你把这个答案贴到了一个错误的问题上,因为它与通知或OP询问的任何其他内容没有任何关系。 – CommonsWare 2011-03-18 17:20:02
使用'ADB logcat',DDMS,或在Eclipse中DDMS角度看logcat的看到,当您轻触个显示哪些信息e'通知'。 – CommonsWare 2011-03-18 17:21:30