Saya dapat menemukan cara untuk mengirim parameter ke aktivitas saya dari notifikasi saya.
Saya memiliki layanan yang membuat pemberitahuan. Ketika pengguna mengklik pemberitahuan saya ingin membuka aktivitas utama saya dengan beberapa parameter khusus. Misalnya id item, sehingga aktivitas saya dapat memuat dan menyajikan tampilan detail item khusus. Lebih spesifik, saya mengunduh file, dan ketika file diunduh saya ingin notifikasi memiliki niat bahwa ketika diklik itu membuka aktivitas saya dalam mode khusus. Saya telah mencoba menggunakan putExtra
pada maksud saya, tetapi sepertinya tidak bisa mengekstraknya, jadi saya pikir saya salah melakukannya.
Kode dari layanan saya yang membuat Pemberitahuan:
// 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);
Kode dari Aktivitas saya yang mencoba mengambil parameter tambahan dari pemberitahuan:
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") );
}
Ekstra selalu nol dan saya tidak pernah memasukkan apa pun ke dalam log saya.
Btw ... onCreate
ini hanya berjalan ketika aktivitas saya mulai, jika aktivitas saya sudah dimulai saya juga ingin mengumpulkan ekstra dan menyajikan aktivitas saya sesuai dengan item_id yang saya terima.
Ada ide?
sumber
PendingIntent.getActivity()
dengan benderaPendingIntent.FLAG_UPDATE_CURRENT
, jika tidak, tambahan yang sama akan digunakan kembali untuk setiap pemberitahuan.PendingIntent.getActivity()
selain pengaturanFLAG_ACTIVITY_SINGLE_TOP
padaIntent
danFLAG_UPDATE_CURRENT
padaPendingIntent
. Lihat stackoverflow.com/questions/7370324/…Saya memiliki masalah yang sama dengan aplikasi saya menampilkan pemberitahuan pesan. Ketika ada beberapa notifikasi dan mengklik setiap notifikasi, ia menampilkan detail notifikasi itu dalam aktivitas pesan tampilan. Saya memecahkan masalah parameter tambahan yang sama sedang diterima dalam maksud pesan tampilan.
Berikut adalah kode yang memperbaikinya. Kode untuk membuat Intent notifikasi.
Kode untuk melihat Aktivitas Pesan.
sumber
Mungkin agak terlambat, tetapi: alih-alih ini:
Gunakan ini:
sumber
Mengalami masalah yang sama di sini. Saya mengatasinya dengan menggunakan kode permintaan yang berbeda, menggunakan id yang sama dengan pemberitahuan, sambil membuat PendingIntent. tetapi masih tidak tahu mengapa ini harus dilakukan.
sumber
Setelah membaca beberapa daftar email dan forum lain saya menemukan bahwa triknya tampaknya menambahkan beberapa data unik ke maksudnya.
seperti ini:
Saya tidak mengerti mengapa ini perlu dilakukan, Ada hubungannya dengan maksud tidak dapat diidentifikasi hanya dengan tambahannya ...
sumber
Saya mencoba segalanya tetapi tidak ada yang berhasil.
akhirnya datang dengan solusi berikut.
1- tambahkan manifes untuk android aktivitas: launchMode = "singleTop"
2- saat membuat niat tertunda lakukan hal berikut, gunakan bundel alih-alih langsung menggunakan intent.putString () atau intent.putInt ()
sumber
AndroidManifest.xml
Sertakan launchMode = "singleTop"
SMSReceiver.java
Tetapkan bendera untuk Intent dan PendingIntent
MessageDetailsActivity.java
onResume () - dipanggil setiap kali, muat ekstra.
Semoga ini bisa membantu, ini didasarkan pada jawaban lain di sini di stackoverflow, tetapi ini adalah yang terbaru yang bekerja untuk saya.
sumber
Mudah, ini solusi saya menggunakan objek!
POJO saya
Pemberitahuan Metode
Aktivitas Baru
Semoga berhasil!!
sumber
Setelah melakukan pencarian saya mendapat solusi dari panduan pengembang android
Untuk Mendapatkan nilai ekstra Intent di kelas Kegiatan Tes, Anda perlu menulis kode berikut:
sumber
stackBuilder
?Dalam implementasi pemberitahuan Anda, gunakan kode seperti ini:
Untuk Mendapatkan nilai ekstra Intent di ExampleActivity, gunakan kode berikut:
CATATAN SANGAT PENTING: metode Intent :: putExtra () adalah yang kelebihan beban. Untuk mendapatkan kunci tambahan, Anda harus menggunakan metode Intent :: get [Type] Extra () .
Catatan: NOTIFICATION_ID dan NOTIFICATION_CHANNEL_ID adalah konstanta yang dideklarasikan dalam ExampleActivity
sumber
G'day, saya juga dapat mengatakan bahwa saya mencoba semua yang disebutkan dalam posting ini dan beberapa lagi dari tempat lain. Masalah # 1 bagi saya adalah bahwa Intent baru selalu memiliki bundel nol. Masalah saya adalah terlalu banyak berfokus pada perincian "apakah saya sudah memasukkan .ini atau .itu". Solusi saya adalah mengambil langkah mundur dari detail dan melihat keseluruhan struktur notifikasi. Ketika saya melakukan itu, saya berhasil menempatkan bagian-bagian kunci dari kode dalam urutan yang benar. Jadi, jika Anda mengalami masalah serupa, periksa:
// Aku suka menentukan tipe data yang jauh lebih baik. mis. bundle.putInt
Dengan urutan ini saya mendapatkan bundel yang valid.
sumber
Jika Anda menggunakan
di file AndroidManifest.xml Anda agar Activity dapat diluncurkan, Anda harus menggunakan yang berikut ini dalam niat Anda:
Penting adalah untuk mengatur data unik misalnya menggunakan id unik seperti:
sumber
untuk penggunaan Layanan
PendingIntent.FLAG_UPDATE_CURRENT
bagi saya bekerja.
sumber
Silakan gunakan sebagai PendingIntent sambil menampilkan pemberitahuan daripada itu akan diselesaikan.
Intensi PendingIntent = PendingIntent.getActivity (this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Tambahkan PendingIntent.FLAG_UPDATE_CURRENT sebagai bidang terakhir.
sumber