1

Android에서 푸시 알림을 사용하고 있습니다. 푸시 알림을 받고 그것을 클릭하면 원하는대로 활동을 시작하지만이 활동이 이미 열리지 않았다면 활동은 이전 데이터를 유지합니다.알림을 클릭하면 활동이 업데이트됩니다.

의 AndroidManifest.xml

<activity 
     android:name=".Detail" 
     android:configChanges="orientation|keyboardHidden|screenSize" 
     android:label="@string/title_activity_detail" 
     android:launchMode="singleTop" 
     android:parentActivityName=".Home" 
     android:theme="@style/Theme.AppCompat.Light.DarkActionBar" > 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="ma.via.marocagenda.Home" /> 
    </activity> 

GCMIntentService.java

public class GCMIntentService extends GCMBaseIntentService { 
... 
private static void generateNotification(Context context, String message) { 
    //int icon = R.drawable.abc_ic_go; 
    int icon = R.drawable.ic_launcher; 
    long when = System.currentTimeMillis(); 
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 
    Notification notification = new Notification(icon, message, when); 
    String title = context.getString(R.string.app_name); 
    Intent notificationIntent = new Intent(context, Detail.class); 
    // put extra for details 
    notificationIntent.putExtra("id", VAL_TAG_ID); 
    notificationIntent.putExtra("titre", VAL_TAG_TITRE); 

    notification.defaults |= Notification.DEFAULT_SOUND; 
    notification.defaults |= Notification.DEFAULT_VIBRATE; 
    notification.defaults |= Notification.DEFAULT_LIGHTS; 

    notificationIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
    //PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK); 
    PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 
    notification.setLatestEventInfo(context, title, message, intent); 
    notification.flags |= Notification.FLAG_AUTO_CANCEL; 
    notificationManager.notify(0, notification); 
} 

무엇이 잘못 될 수 있는가?

+1

무엇이 문제입니까? – suitianshi

+0

"세부 사항"활동이 이미 시작된 경우 알림을 클릭해도 아무런 변화가 없으면 활동이 새 데이터로 업데이트되지 않습니다. – leonidas79

+1

onNewIntent 무시? – Deucalion

답변

0

푸시 알림이 도착할 때마다 서비스의 지역 방송을 사용할 수 있습니다. 현지 브로드 캐스트를 사용하는 방법은

여기 https://stackoverflow.com/a/8875292/826657

읽기이 방송 활동을위한 활동 레지스터를하자 및 푸시 알림이 수신 될 때, onReceive()에서 활동을 업데이트합니다.

더 구체적으로 ActivityManager를 사용하면 활동이 위에 있는지 확인하고, 참으로 방송을 보내면 알림을 표시 할 수 있습니다.

현재 전경 활동을 찾는 방법은 여기를 참조하십시오. https://stackoverflow.com/a/4753333/826657

+0

으로 감사드립니다. 내 코드에서 generateNotification 메소드를 볼 수 있습니다. 알림을 클릭 할 때만 ** detail ** 활동을 시작하고 싶습니다. – leonidas79

관련 문제