طریقه ساخت CustomBroadCast (آموزش)
اول یک توضیح کلی در مورد BroadCast ها میدم.
زمانی هست که شما میخوای از جایی (مثلا یک receiver) که به هیچ اکتیویتی دسترسی ندارید و هیچ راهی برای پیداکردن اکتیویتی و فرگمنت ها وجود نداره، دسترسی ایجاد کنید. BroadCast یک پیغامه که در تمام اپلیکیشن ارسال میشه، هرجا که لیستنرش تعریف شده باشه و در انتظار باشه اونو دریافت میکنه. مثلا شما اگر توی اپلیکیشنتون مسنجر (پیامک) داشته باشید حتما باید از این نوع BroadCast یا Receiver ها استفاده کنید. (در بعضی موارد برای تغییر چند فرگمنت یا ... نیز مورد استفاده قرار میگیره ولی لزوما در این موارد بهترین راه نیست. (در این مورد میشه اکتیویتی رو ریستارت کرد، فرگمنت رو ریستارت کرد، به فرگمنت دسترسی پیدا کرد و مقادیر مورد نیاز رو عوض کرد و ... . خلاصه بستگی به سبک کدنویسیتون داره))
برای ساخت CustomBroadCast مراحل زیر رو طی کنید:
۱- ابتدا جایی که تغییری انجام شده، (مثلا زمانی که پیامک رو دریافت کردید) کد زیر رو مینویسید تا BroadCast به تمام بخش های اپلیکیشن ارسال شود.
Intent intent = new Intent("SMS_RECEIVED"); intent.putExtra("SMS_BODY",body); // در این قسمت میتونید پارامتر ارسال کنید myContext.sendBroadcast(intent); // به جای کانتکست میتونید از اکتیویتی هم استفاده کنید
۲- تعریف BroadCast در مقصد (جایی که میخواید تغییرات انجام بشه)
private BroadcastReceiver receiver; @Override public void onViewCreated(final View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); IntentFilter filter = new IntentFilter(); filter.addAction("SMS_RECEIVED");
receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { change(); // you can change your methodes here } }; getActivity().registerReceiver(receiver, filter); } @Override public void onDetach() { super.onDetach(); try { getActivity().unregisterReceiver(receiver); }catch (Exception e){ e.printStackTrace(); } System.gc(); }
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .