[解決済み】通知クリックからアクティビティにパラメータを送信する方法は?
質問
通知から自分のアクティビティにパラメータを送信する方法を見つけることができます。
私は通知を作成するサービスを持っています。ユーザーが通知をクリックすると、私はいくつかの特別なパラメータで私のメイン活動を開きたいと思います。例えば、アイテムID、私のアクティビティは特別なアイテム詳細ビューをロードして表示することができます。より具体的には、私はファイルをダウンロードしており、ファイルがダウンロードされるとき、クリックされると特別なモードで私の活動を開くという意図を通知に持たせたいのです。私は使用しようとしました
putExtra
をインテントに追加しましたが、うまく抽出できませんでした。
Notificationを作成する私のサービスのコードです。
// construct the Notification object.
final Notification notif = new Notification(R.drawable.icon, tickerText, System.currentTimeMillis());
final RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.custom_notification_layout);
contentView.setImageViewResource(R.id.image, R.drawable.icon);
contentView.setTextViewText(R.id.text, tickerText);
contentView.setProgressBar(R.id.progress,100,0, false);
notif.contentView = contentView;
Intent notificationIntent = new Intent(context, Main.class);
notificationIntent.putExtra("item_id", "1001"); // <-- HERE I PUT THE EXTRA VALUE
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notif.contentIntent = contentIntent;
nm.notify(id, notif);
通知から追加パラメータを取得しようとするアクティビティーのコードです。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle extras = getIntent().getExtras();
if(extras != null){
Log.i( "dd","Extra:" + extras.getString("item_id") );
}
extrasは常にnullで、ログに何も残りません。
ところで
onCreate
は私の活動が始まるときだけ実行されます。私の活動がすでに始まっている場合、私は余分なものを収集し、私が受け取ったitem_idに従って私の活動を提示したいと思います。
何かアイデアはありますか?
解決するには?
このガイドをご覧ください ( 通知の作成 ) とサンプルApiDemoの "StatusBarNotifications" と "NotificationDisplay" を参照してください。
アクティビティがすでに実行されている場合の管理には、2つの方法があります。
-
追加 flag_activity_single_top フラグを、アクティビティ起動時のIntentに追加し、アクティビティクラスに実装します。 onNewIntent(Intent intent) イベントハンドラを使用すると、アクティビティに呼び出された新しいインテントにアクセスできます(単に getIntent() を呼び出すのとは異なり、これは常にアクティビティを開始した最初のインテントを返します)。
-
1と同じですが、Intentにフラグを追加するのではなく、Intentの中に "singleTop" をアクティビティ AndroidManifest.xml に追加してください。
インテンション・エクストラを使用する場合は
PendingIntent.getActivity()
というフラグで
PendingIntent.FLAG_UPDATE_CURRENT
そうでない場合は、すべての通知で同じエクストラが再利用されます。
関連
-
[解決済み] 現在のテーマでスタイル 'coordinatorLayoutStyle' を見つけることができませんでした。
-
[解決済み】Android Studioでused import文がunused import文に指定されるのはなぜ?
-
[解決済み] Android Fragment no view found for ID?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] インスタンス状態の保存を使用してアクティビティ状態を保存するにはどうすればよいですか?
-
[解決済み] アプリケーションからAndroidのWebブラウザでURLを開くにはどうすればよいですか?
-
[解決済み] Intentsを使用して、あるAndroid Activityから別のAndroid Activityにオブジェクトを送信するにはどうすればよいですか?
-
[解決済み] Androidでインテントから余分なデータを取得するにはどうすればよいですか?
-
[解決済み] ボタンクリックで新しいアクティビティを開始する方法
-
[解決済み】Androidで、あるアクティビティから別のアクティビティにオブジェクトを渡す方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】アンドロイドクロームブラウザのモバイルウェブアプリケーションのメニューでHTMLユニコード ☰が検出されない。
-
[解決済み】apkインストール時のINSTALL_FAILED_NO_MATCHING_ABIS
-
[解決済み] [Solved] Error "File google-services.json is missing from module root folder. これがないとGoogle Services Pluginは機能しません" [重複]。
-
[解決済み】新しいAVDを作成すると、CPU/ABIフィールドに「システムイメージがインストールされていません」と表示される。
-
[解決済み】getCheckedRadioButtonId()が無駄なintを返す?
-
[解決済み] サポートされていないメソッドです。BaseConfig.getApplicationIdSuffix()がサポートされていません。
-
[解決済み] android.support.design.widget.FloatingActionButton クラスの展開に失敗しました。
-
[解決済み] AndroidでBluetoothが有効かどうかのチェックに失敗する(REQUEST_ENABLE_BTを変数に解決できない)。
-
[解決済み] 旧インテントエクストラの廃止を通達
-
[解決済み] PendingIntentがIntentのextrasを送らない