0

푸시 알림 메시지를 클릭하면 특정 조각을 열려고합니다. 내 경우에는 조각이 알림이 발생할 때 열려 있습니다.하지만 메시지가 도착하지 않고 알림 메시지를 클릭하여 조각을 열려고합니다. 푸시 알림 메시지를 클릭 할 때 특정 조각을 여는 방법은 무엇입니까?

내 sendNotification에() 방법 : - :

@Override 
    protected void onNewIntent(Intent intent) { 
     super.onNewIntent(intent); 
     Fragment fragment = new NotificationActivity(); 
     getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).addToBackStack(null).commit(); 

    } 

내 문제 내가있다 -이

private void sendNotification(String msg) { 

     mNotificationManager = (NotificationManager) this 
       .getSystemService(Context.NOTIFICATION_SERVICE); 


     Intent intent = new Intent(this, MainActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     intent.putExtra("data", "fromoutside"); 
     getApplicationContext().startActivity(intent); 

     PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0); 


     NotificationCompat.Builder mBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this) 
       .setSmallIcon(getNotificationIcon()) 
       .setContentTitle("Telepoh") 
       .setStyle(new NotificationCompat.BigTextStyle().bigText(msg)) 
       .setContentText(msg) 
       .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE); 

     mBuilder.setContentIntent(contentIntent); 
     mBuilder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL; 
     mBuilder.setAutoCancel(true); 


     mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build()); 
    } 

이 내 onNewIntent 내가 조각을 열 MainActivity에서 재정의() 방법입니다 푸시 알림 메시지를 클릭 할 때이 부분을 열고 싶지만 내 경우에는 푸시 알림 메시지가 도착하면 조각이 열립니다.

+0

'sendNotification()'메소드에서 의도에 액션을 추가하십시오 (반드시 고유하게 만드십시오). 그리고 onNewIntent()에서 Action을 얻고 정확한 의도가 도착할 때만 프래그먼트를 엽니 다. – Abbas

+0

이 방법을 시도했지만 작동하지 않습니다! 어떤 실수라도하면 코드를 써주시겠습니까? – LoveAndroid

+0

'AndroidManifest.xml'을 추가하십시오. – Abbas

답변

0

이 코드 줄은 청취자 나 다른 조건이 아니기 때문에 즉시 새로운 활동을 시작합니다.

Intent intent = new Intent(this, MainActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.putExtra("data", "fromoutside"); 
getApplicationContext().startActivity(intent); 

위의 네 줄을 제거하면됩니다.

PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, 0); 
... 
mBuilder.setContentIntent(contentIntent); 

이 줄은 클릭 할 때 의도를 시작하는 데 충분해야합니다. 참고로

: the developer guide for notifications

1

나는 실수를 발견하고 내 자신의 길에 그것을 해결 : -이 같은

변화 sendNotification에있는 플래그() 메소드 : -

Intent intent = new Intent(this, MainActivity.class); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     intent.putExtra("data", "fromoutside"); 


     PendingIntent contentIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

와의를 MainActivity는 다음과 같이 override 메소드 onNewIntent()의 코드를 변경합니다. -

@Override 
      protected void onNewIntent(Intent intent) { 
       super.onNewIntent(intent); 

       if (intent != null) { 

        String data = intent.getStringExtra("data"); 

        if (data != null) { 

         Fragment fragment = new NotificationActivity(); 
         getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment).addToBackStack(null).commit(); 

        } 


       } 


     } 

해피 코딩 :))