Webview をロードするメイン アクティビティ内で、Webview が起動された場所に応じて、ロードする URL が決定されます。
Bundle extras = getIntent().getExtras();
if (extras != null) {
String theurl = getIntent().getExtras().getString("url");
webView.loadUrl(theurl);
} else {
webView.loadUrl("http://mysite.com");
}
アプリケーションが新しいインスタンスで、ホーム画面から読み込まれた場合、デフォルトの URL が読み込まれます。
アプリケーションが実行されていないときに、Google クラウド メッセージング経由で送信された通知をクリックすると、アプリケーションはカスタム URL を読み込みます。
これは期待どおりに機能します。
私の問題は、アプリケーションが既にバックグラウンドで実行されている場合です。通知をクリックすると、アプリが前面に表示されますが、新しい URL が読み込まれず、デフォルトのままです。
フラグについてはよくわかりません。以前にこの問題がありましたが、フラグの特定の組み合わせで修正されました。
Intent notificationIntent = new Intent(context, MainActivity.class);
notificationIntent.putExtra("url", url);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK );
int requestID = (int) System.currentTimeMillis();
PendingIntent intent = PendingIntent.getActivity(context, requestID, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT);
助けていただければ幸いです。
編集
フラグ PendingIntent.FLAG_CANCEL_CURRENT を追加すると、これで問題はほぼ解決しますが、メイン アクティビティ全体がリロードされますが (スプラッシュ スクリーンが呼び出されます)、既存の Web ビューを再利用したいと考えています。