Android: how to respond to event notification events?

I show the notification through NotificationManagerc BroadcastReceiver, but if the user touches the notification, nothing happens. If I create notifications from a view, the action associated with it is displayed until the notification is touched.

How can I display a specific action / view or otherwise respond to a user regarding a notification?

+3
source share
2 answers

when you receive a broadcast message from NotificationManager, you need to create a new PendingIntent, which will be launched when the user touches the corresponding notification. Now that PendingIntent must have an internal intention, which will have an action to execute, for example, to start an action.

using the onReceive method in a BroadcastReceiver call for a helper method, for example, 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);
    }

if you are performing a recently launched activity and want to cancel a running notification, simply do the following:

String notManagerName = Context.NOTIFICATION_SERVICE;
                NotificationManager notificationManager = (NotificationManager) getSystemService(notManagerName);
                notificationManager.cancel(ProximityAlerts.NOTIFICATION_ID_PROXIMITY_ALERT_FIRED);

amuses

+3
source

Add this to your manifest file

android:name=".QuadDealsPushReceiver"

 <application android:label="@string/app_name" android:name=".QuadDealsPushReceiver"
  android:theme="@style/MyTheme" android:debuggable="true">

Then create a new action and paste this code. Now, if you touch the notification, it will be redirected to Say YourActivityname.class ..

 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!");
        }
    });
}

}

-3
source

All Articles