Android Alarm Manager مع استقبال البث مسجل في الكود بدلاً من البيان

StackOverflow https://stackoverflow.com/questions/3447594

سؤال

أريد استخدام إنذار لتشغيل بعض التعليمات البرمجية في وقت معين. لقد نجحت في تنفيذ إنذار مع جهاز استقبال البث المسجل في هذا البيان ، لكن الطريقة التي أفهمها ، تستخدم هذه الطريقة فئة منفصلة لمستقبل البث.

يمكنني استخدام هذه الطريقة لبدء نشاط آخر ولكن لا يمكنني استخدامه لتشغيل طريقة في نشاطي الرئيسي؟

(كيف يمكنني إخطار نشاط الجري من جهاز استقبال البث؟)

لذلك كنت أحاول تسجيل جهاز استقبال البث الخاص بي في نشاطي الرئيسي كما هو موضح في الإجابة أعلاه.

private BroadcastReceiver receiver = new BroadcastReceiver(){
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "hello", Toast.LENGTH_SHORT).show();
        uploadDB();         
    }
};    

public void onResume() {
    super.onResume();

    IntentFilter filter = new IntentFilter();
    filter.addAction(null);

    this.registerReceiver(this.receiver, filter);
}

public void onPause() {
    super.onPause();

    this.unregisterReceiver(this.receiver);
}

ومع ذلك ، لم أتمكن من جعل هذا العمل مع مدير الإنذار ، فأنا غير متأكد من كيفية ربط نية الإنذار بمستقبل البث. هل يمكن لأي شخص أن يوجهني إلى مثال على تسجيل جهاز استقبال Broadcast Manager بشكل ديناميكي في النشاط؟ أو شرح كيف سأفعل هذا؟

هل كانت مفيدة؟

المحلول

وماذا عن هذا؟

Intent startIntent = new Intent("WhatEverYouWant");
PendingIntent startPIntent = PendingIntent.getBroadcast(context, 0, startIntent, 0);
AlarmManager alarm = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, triggerTime, startPIntent);

ثم في الخاص بك Manifest.xml ملف:

<receiver android:name="com.package.YourOnReceiver">
   <intent-filter>
       <action android:name="WhatEverYouWant" />
   </intent-filter>
</receiver>

بقدر ما أعرف أنه لا يزال يتعين عليك إعلان المتلقي في هذا البيان. لست متأكدًا مما إذا كان يمكنك ضبطه على مثيل خاص داخل نشاطك. يمكنك إعلان وجود onReceive داخل نشاطك وتسميه (إذا كان لدى Broadcastreceiver واجهة. لا أعرف ما إذا كان الأمر كذلك.)

نصائح أخرى

ابدأ نية الإنذار من حيث تريد بدء التنبيه. اكتب كودًا أدناه من حيث تريد البدء في الاستماع إلى المنبه

Intent myIntent = new Intent(getBaseContext(), **AlarmReceiver**.class);
                PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), 0, myIntent, 0);
                AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
                Calendar calendar = Calendar.getInstance();
                calendar.setTimeInMillis(System.currentTimeMillis());
                calendar.add(Calendar.MINUTE, shpref.getInt("timeoutint", 30));
                alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

وفي جهاز استقبال البث ، اكتب الرمز الذي تريد تلقيه. وفي Menifest الكتابة أدناه

<receiver android:name=".AlarmReceiver" android:process=":remote"/>

يمكنك أيضًا وضع إنذار متكرر أيضًا. أتمنى أن يساعد ذلك!

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