Saya memiliki aplikasi dengan notifikasi yang membuka aktivitas tertentu jika saya mengkliknya. Saya ingin itu, jika saya mengklik pemberitahuan dan aktivitas sudah dibuka, itu tidak dimulai lagi, tetapi hanya dibawa ke depan.
Saya pikir saya bisa melakukannya dengan bendera FLAG_ACTIVITY_BROUGHT_TO_FRONT
atau FLAG_ACTIVITY_REORDER_TO_FRONT
, tetapi terus membukanya lagi sehingga saya memiliki kegiatan dua kali.
Ini kode saya:
event_notification = new Notification(R.drawable.icon,
mContext.getString(R.string.event_notif_message), System.currentTimeMillis());
Intent notificationIntent = new Intent(mContext, EventListActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
sendNotification(event_notification, notificationIntent, mContext.getString(R.string.event_notif_title),
body, Utils.PA_NOTIFICATIONS_ID);
Bisakah saya mengelolanya dengan flag atau haruskah saya menyimpan variabel di SharedPreferences untuk memeriksa apakah itu dibuka atau tidak?
Terima kasih!
android
notifications
android-activity
Pengembang PX
sumber
sumber
Jawaban:
Anda perlu mengatur
launchMode
atribut yangActivity
Anda mulaisingleTop
. Ini akan menyebabkan Intents yang masuk dikirimkan ke instance yang ada daripada memulai instance baru ketika ituActivity
sudah di bagian atas tumpukan tugas.Hal ini dilakukan dalam manifest dengan menambahkan
android:launchMode="singleTop"
ke<activity>
elemen. Untuk mengakses Intent terbaru (jika Anda tertarik pada data apa pun yang mungkin diteruskan), gantionNewIntent()
diActivity
.sumber
Cobalah mengatur bendera
Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP
sebagai gantinya.Dari dokumentasi untuk FLAG_ACTIVITY_CLEAR_TOP (penekanan milik saya):
sumber
new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP)
.Gunakan
onNewIntent()
untuk menangani data baru dari klik pemberitahuan dan menyegarkan aktivitas.Dalam
onNewIntent
mendapatkan data baru dari maksud yang baru (yang dilayani oleh notifikasi baru) dan menangkap mereka, misalnya:title = intent.getStringExtra("title")
di
onCreate
sebelumnya :)Ini akan menyegarkan aktivitas saat ini dengan data notifikasi baru.
Anda juga dapat mengikuti tutorial ini.
sumber
Cukup Salin kode dan tempel di aktivitas peluncur utama Anda.
Inilah Jawaban Asli
sumber
Saya pikir Anda harus menambahkan beberapa logika untuk membuatnya berfungsi, mungkin ini dapat membantu:
Misalnya saya memiliki Splash Screen (Launcher dan MAIN) dari APP:
Dan di FirebaseService saya, saya telah melakukan yang berikut:
sumber
sumber