Giriş
Şu satırı dahil ederiz.
onReceive metodu
Bu metod çok uzun çalışmamalıdır. Açıklaması şöyle.
onReceive Intent parametresi
XML içinde action belirtsek bile kontrol etmek için kullanılır.
Kullanım
İki şekilde kullanılabilir.
1. Manifest içinde.
Bu durumda BroadcastReceiver nesnesini unregister etmeye gerek yoktur.
2. Activity içinde
Activity onResume(), onCreate() metodları içinde register edilir.
onDestroy() metodunda unregister edilir.
Tanımlama
Şöyle yaparız
2. Activity İçinde Tanımlama
Örnek
Sınıfımız şöyle register edilir.
onCreate() metodunda şöyle yaparız.
Wifi Taraması sonuçlarını almak için kullanılabilir.
Alarm İçin Kullanımı
BroadcastReceiver sınıfı AlarmManager ile beraber kullanılarak belli bir saatte bir iş yapmak için kullanılabilir.
Boot yazısına taşıdım.
SMS okumak için Kullanımı
SMSMessage yazısına taşıdım.
Şu satırı dahil ederiz.
import android.content.BroadcastReceiver;
BroadcastReceiver sistem veya uygulama olaylarını işlemek için kullanılır.onReceive metodu
Bu metod çok uzun çalışmamalıdır. Açıklaması şöyle.
When it runs on the main thread you should never perform long-running operations in it (there is a timeout of 10 seconds that the system allows before considering the receiver to be blocked and a candidate to be killed).
XML içinde action belirtsek bile kontrol etmek için kullanılır.
@Override
public void onReceive(Context context, Intent intent) {
if (Telephony.Sms.Intents.SMS_RECEIVED_ACTION.equals(intent.getAction())) {
...
}
}
DiğerKullanım
İki şekilde kullanılabilir.
1. Manifest içinde.
Bu durumda BroadcastReceiver nesnesini unregister etmeye gerek yoktur.
2. Activity içinde
Activity onResume(), onCreate() metodları içinde register edilir.
onDestroy() metodunda unregister edilir.
Tanımlama
Şöyle yaparız
BroadcastReceiver receiver= new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// do your stuff here
}
};
1. Manifest İçinde Tanımlama
Şöyle yaparız.<receiver android:name="com.domain.app.">
<intent-filter>
<action android:name="android.intent.action.XYZ" />
</intent-filter>
</receiver>
Action alanı bazen bir provider olabilir.<receiver android:name=".SmsListener">
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
2. Activity İçinde Tanımlama
Örnek
Sınıfımız şöyle register edilir.
registerReceiver(myReceiver, new IntentFilter(...));
Şöyle unregister edilir.unregisterReceiver(myReceiver);
ÖrnekonCreate() metodunda şöyle yaparız.
registerReceiver(this.broadCastNewMessage, new IntentFilter("bcNewMessage"));
onDestroy() içinde şöyle yaparız.unregisterReceiver(broadCastNewMessage);
Service sınıfında şöyle yaparız.sendBroadcast(new Intent().setAction("bcNewMessage"));
Wifi Taraması İçin KullanımıWifi Taraması sonuçlarını almak için kullanılabilir.
Alarm İçin Kullanımı
BroadcastReceiver sınıfı AlarmManager ile beraber kullanılarak belli bir saatte bir iş yapmak için kullanılabilir.
Intent intent = new Intent(context, MyBroadcastReceiver.class);
PendingIntent recurring = PendingIntent.getBroadcast(...);
AlarmManager alarms = (AlarmManager) getSystemService(...);
alarms.setRepeating(...);
AlarmManager şöyle kullanılır. Önce ne zaman çalışmasını istediğimizi ve aralığını kodlarız.Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 6);
calendar.set(Calendar.MINUTE, 0);
int interval = 1000 * 60 * 60 * 24;
Daha sonra alarmı kurarız./* Repeating on every 24 hours interval */
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
interval, recurring);
Boot İçin KullanımıBoot yazısına taşıdım.
SMS okumak için Kullanımı
SMSMessage yazısına taşıdım.
Hiç yorum yok:
Yorum Gönder