在android中处理不同类型的通知 [英] handle different types of notifications in android

查看:195
本文介绍了在android中处理不同类型的通知的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在android.Audio/Video调用和msg中有3种类型的通知。如何根据通知类型进行区分,并在不同通知中打开不同的活动。

I have 3 types of notifications in android.Audio/Video call and msg. How to differentiate based on notification type and open different activity on different notification. THis is hoW I open activity on click of notification.

 private void sendNotification(long when,String msg) {
    String notificationContent ="Notification Content Click Here to go more details";
    String notificationTitle ="This is Notification";
    //large icon for notification,normally use App icon
    Bitmap largeIcon = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher);
    int smalIcon =R.drawable.hcp;
    String notificationData="This is data : "+msg;

    /*create intent for show notification details when user clicks notification*/
    Intent intent =new Intent(getApplicationContext(), NotificationDetailsActivity.class);
    intent.putExtra("DATA", notificationData);

    /*create unique this intent from  other intent using setData */
    intent.setData(Uri.parse("http://www.google.com"));
    /*create new task for each notification with pending intent so we set Intent.FLAG_ACTIVITY_NEW_TASK */
    PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    Log.d(TAG, "Preparing to send notification...: " + msg);
    mNotificationManager = (NotificationManager) this
            .getSystemService(Context.NOTIFICATION_SERVICE);



    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
            this).setSmallIcon(R.drawable.hcp)
            .setContentTitle("GCM Notification")
            .setContentIntent(pendingIntent)
            .setAutoCancel(true)
            .setSmallIcon(smalIcon)
            .setTicker(notificationTitle)
            .setLargeIcon(largeIcon)
            .setContentText(notificationContent)    
            .setStyle(new NotificationCompat.BigTextStyle().bigText(msg))
            .setContentIntent(pendingIntent);
    ;
    Notification notification=mBuilder.build();

    mBuilder.setContentIntent(pendingIntent);
    mNotificationManager.notify((int) when, notification);

    Log.d(TAG, "Notification sent successfully.");
}


推荐答案

假设数据)您的接收来自Web服务。现在与msg参数一起,您必须获得一些其他参数,通过这些参数您可以区分以下通知是音频/视频呼叫还是消息。

Assuming that the data (msg) your receiving is from a web service. Now along with the msg parameter, you must be getting some other parameters by which you can distinguish that the following notification is Audio/Video call or message.

因此,您可以创建一个方法将返回可以使用的类名,而不是 NotificationDetailsActivity.class

So you can create a method that will return the class name which can be used instead of NotificationDetailsActivity.class

private Class<?> getClassFromType(String type) {
    if(type.equals("Audio")
        return AudioActivity.class;
    else if(type.equals("Video")
        return VideoActivity.class;
    else if(type.equals("Message")
        return MessageActivity.class;
}

最终代码如下所示:

The final code will be something like this:

Intent intent =new Intent(getApplicationContext(), getClassFromType(type));

这里 type 将是区分通知的变量。

Here type will be the variable that distinguishes the notification.

希望这能解决您的问题。

Hope this will solve your problem.

这篇关于在android中处理不同类型的通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆