1

私はこの問題に苦しんでいます:私はいくつかの通知を持っており、アプリケーションがすでに実行中であってもインテントエクストラをアクティビティに渡したいと思います。アクティビティが実行されている場合、インテントエキストラを取得

S.O.私のために動作しませんでした、追加のように:誰かが提案のように

notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 

android:launchMode="singleTop" 

をマニフェストに、私はまた、これを使用しています。

私のコードはこれです:アクティビティ内

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(NotificationService.this); 
mBuilder.setSmallIcon(R.mipmap.ic_launcher); 
mBuilder.setContentTitle("New website change."); 
mBuilder.setContentText("Changed: " + url); 

Intent notificationIntent = new Intent(getContext(), MainActivity.class); 
Bundle b = new Bundle(); 
b.putString("key", url); 
notificationIntent.putExtras(b); 

notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 

PendingIntent intent = PendingIntent.getActivity(getContext(), id, notificationIntent, 0); 

mBuilder.setContentIntent(intent); 

NotificationManager mNotificationManager = (NotificationManager) getSystemService(NotificationService.this.NOTIFICATION_SERVICE); 
mNotificationManager.notify(id, mBuilder.build()); 

そして:

Bundle b = getIntent().getExtras(); 
if(b != null) { 
    url = b.getString("key"); 
    editText.setText(url); 
    webView.loadUrl(url); 
    webView.requestFocus(); 
} 

すべてのヘルプは大歓迎だろう、私は、オープンソースのおかげで、このアプリのコードをリリースします。

+0

達成するためにanted。 –

+0

私は通知にいくつかのURLを持っており、私はwebviewを持っているアクティビティでそれを開きたいと思います。アクティビティが実行されていない場合(つまり、別のアクティビティが実行されている場合)、通知はそのエキストラを送信できますが、アクティビティがフォアグラウンドにある場合は、エクストラを取得できません(この場合はURL)。 –

+0

http://stackoverflow.com/questions/40021484/fcm-notification-using-android-studio/40021597#comment67322451_40021597 –

答えて

0
Bundle b = getIntent().getExtras(); 

これは、常にアクティビティインスタンスを作成に使用されたIntentを返します。アクティビティが既に存在する場合には

、あなたが戻ってそのアクティビティに制御を指示するIntentフラグ(例えば、FLAG_ACTIVITY_REORDER_TO_FRONTやマニフェストの設定(例えば、singleTop)を使用している、あなたはonNewIntent()をオーバーライドする必要があります。そのメソッドに渡さIntentバックフォアグラウンドに活動をもたらすために使用されたIntentです。

-1

オーバーライドonNewIntent活動の方法と、この方法では、バンドルから値を取得する。wはあなたに何をすべきかはっきりしていない

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

String yourvalue = getIntent.getExtras.getString("key"); 

    } 
+1

のgetIntent()ではなく、intentフィールドで追加情報を検索する必要があります。 –

関連する問題