سؤال

أواجه مشكلة مع alarmManager والقصد المعلق مع الإضافات التي ستتوافق معها.

إذا قمت بتعيين أجهزة إنذار متعددة ، فسوف تنفجر ، ولكن الإضافات تبقى كما هي.

لقد قرأت بالفعل في هذه الأسئلة:

وقد حاولت:

  • تعيين معرف فريد لكل نية معلقة و
  • باستخدام جميع أعلام النوايا المعلقة ،

كل شيء دون جدوى. ليس لدي أدنى فكرة لماذا لن ينجح.

هنا مقتطف رمز:

Intent intent = new Intent(con,
                    AppointmentNotificationReciever.class);
            intent.putExtra("foo", bar.toString());


            int id = randomNum;

            PendingIntent sender = PendingIntent.getBroadcast(con, id,
                    intent, PendingIntent.FLAG_UPDATE_CURRENT);


            AlarmManager am = (AlarmManager) con.getSystemService(Context.ALARM_SERVICE);
            am.set(AlarmManager.RTC_WAKEUP, scheduleExecution, sender);
هل كانت مفيدة؟

المحلول

ربما اثنين من المسألة المختلفة هنا:

1) إذا كنت قد قمت بالفعل بإنشاء PendingIntent الخاص بك من قبل و "يتطابق" مع PendingIntent موجود ، فيجب عليك تحديد علامة pendingIntent.flag_update_current أو لن تمر بالإضافات. تعتمد "المباراة" على المعايير التي تستخدمها neain.filterequals () ، لذلك بالتأكيد اقرأ المستندات هناك وتأكد من فهم البيانات أو الإجراء والنوع ، إلخ.

2) لقد قرأت أنه إذا لم تقم بتعيين إجراء على نيتك ، فلن تنشر الإضافات ، لذلك ربما حاول intent.setAction ("com.blah.action").

نصائح أخرى

لقد واجهت مشكلة مماثلة. استخدام PenderIntent.flag_one_shot قد يحل المشكلة ، لأنه يعني أن النشاط المعلق لن يتم إعادة استخدامه.

قد يكون هذا بسبب النشاط :: getIntent إعادة النية الأصلية للنشاط بالنظر إلى بعض الأعلام/المرشحات النية.

إذا كان هذا هو الحال بالنسبة لك ، فستحتاج إلى النظر إلى النشاط :: onnewintent. تجاوز هذه الطريقة ، ويجب أن يكون النية التي تم نقلها إلى هذه الوظيفة هي النية الجديدة مع الإضافات المناسبة ، إلخ.

يذهب الائتمان إلى هذا السؤال الذي ساعدني في حل مشكلتي: لماذا هو نية النشاط القابل للبحث. getAction () فارغة؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top