الفلاتر والمقاصد في برمجة الأندرويد Android Devlopement Intents and Filter#
الفلاتر والمقاصد في برمجة الأندرويد
Android Devlopement Intents and Filter#
الفلاتر والمقاصد في برمجة الأندرويد Android Devlopement Intents and Filter#
المقصد intent هو كائن مراسلة يمكنك استخدامه لطلب إجراء من مكون تطبيق آخر. على الرغم من أن المقاصد تسهل الاتصال بين المكونات بعدة طرق ، إلا أن هناك ثلاث حالات استخدام أساسية:
بدء النشاط
يمثل النشاط شاشة واحدة في التطبيق. يمكنك بدء مثيل جديد للنشاط بتمرير نية إلى startActivity (). تصف مقصد intent النشاط لبدء وتحميل أي بيانات ضرورية.
إذا كنت ترغب في تلقي نتيجة من النشاط عند انتهائه ، فاتصل بـ startActivityForResult (). يتلقى نشاطك النتيجة ككائن هدف منفصل في رد الاتصال onActivityResult () لنشاطك. لمزيد من المعلومات ، راجع دليل الأنشطة.
بدء الخدمة Starting a service
الخدمة عبارة عن مكون يقوم بإجراء عمليات في الخلفية بدون واجهة مستخدم. باستخدام Android 5.0 (API المستوى 21) والإصدارات الأحدث ، يمكنك بدء تشغيل خدمة باستخدام JobScheduler. لمزيد من المعلومات حول JobScheduler ، راجع وثائق مرجع API الخاصة به.
بالنسبة للإصدارات الأقدم من Android 5.0 (مستوى API 21) ، يمكنك بدء تشغيل الخدمة باستخدام أساليب فئة الخدمة. يمكنك بدء خدمة لتنفيذ عملية لمرة واحدة (مثل تنزيل ملف) عن طريق تمرير intent إلى startService (). تصف ال intent الخدمة لبدء وتحمل أي بيانات ضرورية.
إذا تم تصميم الخدمة بواجهة عميل خادم ، فيمكنك الربط بالخدمة من مكون آخر عن طريق تمرير مقصد intent إلى bindService (). لمزيد من المعلومات ، راجع دليل الخدمات.
تسليم البث delivering broadcasts
البث هو رسالة يمكن لأي تطبيق استلامها. يقدم النظام عمليات بث متعددة لأحداث النظام ، مثل عندما يرتفع النظام أو يبدأ الجهاز في الشحن. يمكنك توصيل بث إلى تطبيقات أخرى عن طريق تمرير مقصد sendBroadcast () أو sendOrderedBroadcast ().
تشرح بقية هذه الصفحة كيفية عمل المقاصد intents وكيفية استخدامها. للحصول على معلومات ذات صلة ، راجع التفاعل مع تطبيقات أخرى ومشاركة المحتوى
أنواع المقاصد intents types
هناك نوعان من المقاصد intent:
تحدد المقاصد الصريحة التطبيق الذي سيحقق الهدف ، من خلال توفير اسم حزمة التطبيق المستهدف أو اسم فئة مكون مؤهل بالكامل. ستستخدم عادةً مقصد صريحة لبدء تشغيل مكون في التطبيق الخاص بك ، لأنك تعرف اسم فئة النشاط أو الخدمة التي تريد بدء تشغيلها. على سبيل المثال ، قد تبدأ نشاطًا جديدًا داخل تطبيقك استجابةً لإجراء المستخدم ، أو تبدأ خدمة لتنزيل ملف في الخلفية.
لا تتضمن المقاصد الضمنية مكونًا معينًا ، ولكن بدلاً من ذلك تعلن إجراءً عامًا يجب تنفيذه ، مما يسمح لمكون من تطبيق آخر بمعالجته. على سبيل المثال ، إذا كنت تريد أن تُظهر للمستخدم موقعًا على خريطة ، فيمكنك استخدام نية ضمنية لطلب أن يُظهر تطبيق قادر آخر موقعًا محددًا على الخريطة.
يوضح الشكل 1 كيف يتم استخدام المقصد عند بدء النشاط. عندما يقوم كائن Intent بتسمية مكون نشاط معين بشكل صريح ، يبدأ النظام على الفور في تشغيل هذا المكون.
الشكل 1. كيف يتم تسليم المقصد الضمني من خلال النظام لبدء نشاط آخر: [1] يُنشئ النشاط "أ" هدفًا مع وصف للإجراء ويمرره إلى startActivity (). [2] يبحث نظام Android عن جميع التطبيقات بحثًا عن مرشح نوايا يطابق المقصد intent. عندما يتم العثور على تطابق ، [3] يبدأ النظام في نشاط المطابقة (النشاط B) من خلال استدعاء أسلوب onCreate () الخاص به وتمريره إلى النية.
عند استخدام المقصد الضمني ، يجد نظام Android المكون المناسب للبدء بمقارنة القصد من النية بعوامل تصفية المقاصد المعلنة في ملف البيان للتطبيقات الأخرى على الجهاز. إذا كانت المقصد تتطابق مع مرشح المقاصد ، فإن النظام يبدأ هذا المكون ويسلم كائن المقاصد. إذا كانت عوامل تصفية المقاصد المتعددة متوافقة ، يعرض النظام مربع حوار حتى يمكن للمستخدم اختيار التطبيق الذي تريد استخدامه.
عامل تصفية المقصد هو تعبير في ملف بيان التطبيق الذي يحدد نوع المقاصد intentsالتي يرغب المكون في تلقيها. على سبيل المثال ، بإعلان مرشح فلتر النوايا او المقاصد intents لأحد الأنشطة ، يمكنك من تشغيل التطبيقات الأخرى نشاطك مباشرة بنوع معين من النوايا intents. وبالمثل ، إذا لم تعلن عن أي مرشحات نية intent للنشاط ، فيمكن البدء به فقط بقصد صريح.
بناء المقصد intent building
يحمل كائن Intent المعلومات التي يستخدمها نظام Android لتحديد أي مكون يتم تشغيله (مثل اسم المكون أو فئة المكون الذي يجب أن يستقبل القصد) ، بالإضافة إلى المعلومات التي يستخدمها مكون المستلم من أجل تنفيذ الإجراء بشكل صحيح (مثل الإجراء الواجب اتخاذه والبيانات الواجب اتخاذها)
المعلومات الأساسية الواردة في نية هي التالية:
اسم المكون
اسم المكون للبدء.
يعد هذا اختياريًا ، ولكنه الجزء المهم من المعلومات الذي يجعل المقصد صريحًا ، مما يعني أنه يجب تسليم المقصد فقط إلى مكون التطبيق المحدد بواسطة اسم المكون. بدون اسم مكون ، يكون المقصد ضمنيًا ويحدد النظام المكون الذي يجب أن يتلقى المقصد بناءً على معلومات المقصد الأخرى (مثل الإجراء والبيانات والفئة - الموضحة أدناه). إذا كنت بحاجة إلى تشغيل مكون محدد في تطبيقك ، فيجب عليك تحديد اسم المكون.
المقصد او النية او النوايا او القصد هو intent.
هذا الحقل من Intent هو كائن ComponentName ، والذي يمكنك تحديده باستخدام اسم فئة مؤهل بالكامل للمكون الهدف ، بما في ذلك اسم حزمة التطبيق ، على سبيل المثال ، com.example.ExampleActivity. يمكنك تعيين اسم المكون باستخدام setComponent () أو setClass () أو setClassName () أو مع مُنشئ Intent.
عمل
سلسلة تحدد الإجراء العام المراد تنفيذه (مثل العرض أو الانتقاء).
في حالة وجود نية للبث ، هذا هو الإجراء الذي تم الإبلاغ عنه. يحدد الإجراء إلى حد كبير كيفية تنظيم بقية النية - خاصة المعلومات الواردة في البيانات والإضافات.
يمكنك تحديد الإجراءات الخاصة بك لاستخدامها من قبل النوايا داخل التطبيق الخاص بك (أو للاستخدام من قبل التطبيقات الأخرى لاستدعاء مكونات في التطبيق الخاص بك) ، ولكن عادة ما تحدد ثوابت الإجراءات المحددة بواسطة فئة Intent أو فئات إطار العمل الأخرى. فيما يلي بعض الإجراءات الشائعة لبدء النشاط:
ACTION_VIEW
استخدم هذا الإجراء عن قصد مع startActivity () عندما يكون لديك بعض المعلومات التي يمكن أن يظهرها النشاط للمستخدم ، مثل صورة يتم عرضها في تطبيق معرض ، أو عنوان لعرضه في تطبيق خريطة.
ACTION_SEND
المعروف أيضًا باسم هدف المشاركة ، يجب عليك استخدام هذا في نية مع startActivity () عندما يكون لديك بعض البيانات التي يمكن للمستخدم مشاركتها من خلال تطبيق آخر ، مثل تطبيق البريد الإلكتروني أو تطبيق المشاركة الاجتماعية.
راجع مرجع فئة النوايا لمزيد من الثوابت التي تحدد الإجراءات العامة. يتم تعريف الإجراءات الأخرى في أي مكان آخر في إطار عمل Android ، مثل إعدادات الإجراءات التي تفتح شاشات معينة في تطبيق الإعدادات بالنظام.
يمكنك تحديد الإجراء لنية مع setAction () أو مع مُنشئ Intent.
إذا قمت بتحديد الإجراءات الخاصة بك ، فتأكد من تضمين اسم حزمة التطبيق الخاص بك كبادئة ، كما هو موضح في المثال التالي:
الصنف category
سلسلة تحتوي على معلومات إضافية حول نوع المكون الذي يجب أن يعالج القصد. يمكن وضع أي عدد من أوصاف الفئات في نية ، لكن معظم النوايا لا تتطلب فئة. فيما يلي بعض الفئات الشائعة:
CATEGORY_BROWSABLE
يتيح النشاط المستهدف بدء تشغيله بواسطة مستعرض ويب لعرض البيانات المشار إليها بواسطة ارتباط ، مثل صورة أو رسالة بريد إلكتروني.
CATEGORY_LAUNCHER
النشاط هو النشاط الأولي للمهمة وهو مدرج في مشغل تطبيق النظام.
راجع وصف فئة Intent للحصول على قائمة كاملة بالفئات.
يمكنك تحديد فئة مع addCategory ().
إضافات extras
أزواج القيمة الرئيسية التي تحمل معلومات إضافية مطلوبة لإنجاز الإجراء المطلوب. مثلما تستخدم بعض الإجراءات أنواع معينة من URIs للبيانات ، تستخدم بعض الإجراءات أيضًا إضافات معينة.
يمكنك إضافة بيانات إضافية بطرق مختلفة putExtra () ، كل منها يقبل معلمتين: اسم المفتاح والقيمة. يمكنك أيضًا إنشاء كائن Bundle مع جميع البيانات الإضافية ، ثم إدراج Bundle في Intent باستخدام putExtras ().
على سبيل المثال ، عند إنشاء نية لإرسال بريد إلكتروني مع ACTION_SEND ، يمكنك تحديد المستلم باستخدام مفتاح EXTRA_EMAIL ، وتحديد الموضوع باستخدام مفتاح EXTRA_SUBJECT.
تحدد الفئة Intent العديد من الثوابت EXTRA_ * لأنواع البيانات القياسية. إذا كنت بحاجة إلى الإعلان عن المفاتيح الإضافية الخاصة بك (للنوايا التي يستقبلها تطبيقك) ، فتأكد من تضمين اسم حزمة التطبيق الخاص بك كبادئة ، كما هو موضح في المثال التالي
إن Android Intent عبارة عن وصف تجريدي لعملية يتم تنفيذها. يمكن استخدامه مع startActivity لإطلاق نشاط ، و broadcastIntent لإرساله إلى أي من مكونات BroadcastReceiver المهتمة ، و startService (Intent) أو bindService (Intent ، ServiceConnection ، int) للاتصال بخدمة الخلفية.
القصد نفسه ، كائن Intent ، هو بنية بيانات خاملة تتضمن وصفًا مجردة لعملية يتم تنفيذها.
على سبيل المثال ، لنفترض أن لديك نشاطًا يحتاج إلى تشغيل عميل بريد إلكتروني وإرسال بريد إلكتروني باستخدام جهاز Android الخاص بك. لهذا الغرض ، سيرسل نشاطك ACTION_SEND مع المختار المناسب ، إلى Android Intent Resolver. يوفر المحدد المحدد الواجهة المناسبة للمستخدم لاختيار كيفية إرسال بيانات بريدك الإلكتروني.
Intent email = new Intent(Intent.ACTION_SEND, Uri.parse("mailto:")); email.putExtra(Intent.EXTRA_EMAIL, recipients); email.putExtra(Intent.EXTRA_SUBJECT, subject.getText().toString()); email.putExtra(Intent.EXTRA_TEXT, body.getText().toString()); startActivity(Intent.createChooser(email, "Choose an email client from..."));
أعلاه بناء الجملة استدعاء أسلوب startActivity لبدء نشاط البريد الإلكتروني والنتيجة يجب أن تكون كما هو موضح أدناه -
التسميات: Android الاندرويد
<< الصفحة الرئيسية