Intent Filter چیست ؟
سلام دوستان عزیز در این مقاله به بررسی تگ Intent Filter می پردازیم Intent Filter چیست ؟ شاید سوالی باشد که ذهن شما را مشغول کرده باشد در دو بخش امکان استفاده از intent filter در اندروید وجود دارد بخش اول در فایل AndroidManifest و بخش دوم استفاده از intent filter از طریق بخش کد نویسی است در ادامه با ما همراه باشید تا متوجه شوید Intent Filters چیست ؟
Intent Filter چیست ؟
توضیح سخت ?
intent filter مشخص کننده یک نوع فیلتر برای Intent است که آن Intent باید چه رفتاری نسبت به عملی که توسط اکتیویتی , سرویس یا حتی broadcast receiver انجام می شود نشان دهد (اگر متوجه نشدید ادامه دهید)
توضیح ساده ?
اگر بخواهیم intent filter را به زبان ساده توضیح دهیم می توانید با یک مثال ساده آن را یاد گیرید در نظر بگیرید یک بطری وجود دارد و در سر این بطری یک فیلتر برای رد شدن مواد مختلف وجود دارد این فیلتر اگر مواد معدنی باشند امکان رد شدن را میدهد اگر به طور مثال جیوه باشد رد نمی شود intent filter هم در اندروید همین کار را می کند در ابتدا که یک پروژه ایجاد کنید در فایل AndroidManifest یک intent filter تعریف شده است که مشخص می کند برنامه هنگام اجرا کدام اکتیویتی را به عنوان اکتیویتی پیشفرض اجرا کند مثال دیگر برای این بخش را می توان برای یک مرورگر ساده در نظر گرفت اگر بخواهیم کاربر هنگام باز کردن یک Url یا یک سایت , اپلیکیشن ما نیز به او پیشنهاد داده شود باید برای اینکار باید یک Intent Filter تعریف کرد برای اینکار باید به اکتیویتی که ایجاد کردیم یک intent-filter اضافه کنیم در ادامه باهم کدش را بررسی می کنیم.
1 2 3 4 5 6 7 8 9 | <activity android:name=".HelloWorld" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.DEFAULT"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="http" android:host="androidium.org"/> </intent-filter> </activity> |
در بالا از intent-filter ی به نام BROWSABLE استفاده کردیم که باعث می شود کاربر هنگامی که در حال باز کردن یک Url است اپلیکیشن ما نیز به او suggest داده شود.
زمانی که کد زیر را تست کنید برنامه خودتان را می توانید از بخش suggest های گوشی انتخاب کنید.
1 2 | Intent intent = new Intent (Intent.ACTION_VIEW, Uri.parse("http://androidium.org")); startActivity(intent); |
ما در بالا درحال باز کردن یک Intent جدید هستیم و همراه با آن یک Url را نیز داریم ارسال می کنیم تمامی اپلیکیشن هایی که دارای تگ BROWSABLE باشند به ما نمایش داده خواهند شد.
تنها استفاده intent-filter در intent نیست در نظر بگیرید بخواهیم بررسی کنیم زمانی که باطری گوشی بروی حالت low قرار گرفت یک کار خاصی انجام دهیم برای اینکار باید همراه با BroadcastRecier از intent-filter ی به نام ACTION_BATTERY_LOW استفاده کنیم.
این مقاله هم به پایان رسید.
موفق و پیروز باشید.
من Intent ها را چیزی شبیه موج تشبیه کردم. وقتی صحبت از broadcast recevier می شود، در واقع شبیه یک دیش ماهواره است که بر بالای بدنه اپلیکیشن ما نصب است. سیستم عامل اندروید، ماهواره است. و اما intent filter در واقع، جهت دیش است! برای گرفتن امواج خاص.
به طور مثال وقتی باتری در حال اتمام است، ماهواره به همه اپلیکیشن ها موج یا همان intent در حال تمام شدن را می فرستد. ما با تنظیم یک دیش بر بالای بدنه اپلیکیشن مان، که همان broadcast recevier است، و چقدر وجه تسمیه خوبی دارد، و محدود کردن گرفتن امواج ، به فقط امواج باتری در حال اتمام توسط intent filter که باز هم وجه تسمیه خوبی دارد، می توانیم کار را جلو ببریم و به نظرم این شبیه سازی، بسیار کارآمد است.
از این پست، متشکرم
مثال جالب و دوست داشتنی ای بود ، و بسیار کاربردی
توضیحات مفید و قابل فهمی بود سپاسگزارم
مقاله بسیار شفاف و واضحی بود