2016-05-06 14 views
1

android.Audio/Videoコールとmsgに3種類の通知があります。通知タイプに基づいて区別し、異なる通知で異なる活動を開く方法。これは、私は通知のクリックで活動を開きます。は、アンドロイドのさまざまな種類の通知を処理します。

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."); 
} 
+0

通知ペイロードに識別子を追加できます。それがあなたのクライアントアプリケーション内にあるかどうかを確認する方法。 –

答えて

0

あなたの受信がWebサービスからのものであると仮定します。次にmsgパラメータとともに、次の通知がオーディオ/ビデオコールまたはメッセージであることを区別できるいくつかの他のパラメータを取得している必要があります。

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

することになります。

だから、最終的なコードは次のようなものになります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; 
} 

の代わりに使用することができ、クラス名を返しますメソッドを作成することができます通知を区別する変数

これがあなたの問題を解決することを願っています。

関連する問題