- بنية الجملة:
- إذا كانت علامة البيانات هي العنصر الفرعي المباشر لـ
<intent-filter>:
<data android:scheme="string" android:host="string" android:port="string" android:path="string" android:pathPattern="string" android:pathPrefix="string" android:pathSuffix="string" android:pathAdvancedPattern="string" android:mimeType="string" />
إذا كانت علامة البيانات هي العلامة الفرعية المباشرة لعلامة<uri-relative-filter-group>:
<data android:path="string" android:pathPattern="string" android:pathPrefix="string" android:pathSuffix="string" android:pathAdvancedPattern="string" android:fragment="string" android:fragmentPattern="string" android:fragmentPrefix="string" android:fragmentSuffix="string" android:fragmentAdvancedPattern="string" android:query="string" android:queryPattern="string" android:queryPrefix="string" android:querySuffix="string" android:queryAdvancedPattern="string" />
- مضمّنة في:
-
<intent-filter><uri-relative-filter-group> - description:
- تضيف مواصفات بيانات إلى intent filter. تكون المواصفات
نوع بيانات، باستخدام السمة
mimeType، أو معرّف موارد منتظم (URI)، أو كليهما. يتم تحديد معرّف الموارد الموحّد (URI) من خلال سمات منفصلة لكل جزء من أجزائه:<scheme>://<host>:<port>[<path>|<pathPrefix>|<pathPattern>|<pathAdvancedPattern>|<pathSuffix>]هذه السمات التي تحدّد تنسيق معرّف الموارد المنتظم (URI) اختيارية، ولكنّها تعتمد أيضًا على بعضها البعض:
- في حال عدم تحديد
schemeلـ intent filter، يتم تجاهل جميع سمات معرّف الموارد المنتظم الأخرى. - في حال عدم تحديد
hostللفلتر، سيتم تجاهل السمةportوجميع سمات المسار.
تساهم جميع عناصر
<data>الواردة ضمن عنصر<intent-filter>نفسه في الفلتر نفسه. على سبيل المثال، مواصفات الفلتر التالية:<intent-filter . . . > <data android:scheme="something" android:host="project1.example.com" /> <data android:scheme="something-else" android:host="project2.example.com" android:path="/page1" /> ... </intent-filter>
تعادل ما يلي:
<intent-filter . . . > <data android:scheme="something" /> <data android:scheme="something-else" /> <data android:host="project1.example.com" /> <data android:host="project2.example.com" /> <data android:path="/page1" /> ... </intent-filter>
يمكنك وضع أي عدد من عناصر
<data>داخل عنصر<intent-filter>لمنحه خيارات بيانات متعددة. لا تحتوي أي من سماته على قيم تلقائية.للحصول على معلومات حول طريقة عمل فلاتر الأهداف، بما في ذلك قواعد مطابقة عناصر الأهداف مع الفلاتر، راجِع الأهداف وفلاتر الأهداف وقسم فلاتر الأهداف في نظرة عامة على ملف البيان.
- في حال عدم تحديد
- السمات:
android:scheme- جزء المخطط من معرّف الموارد المنتظم (URI) هذه هي السمة الأساسية الدنيا لتحديد معرّف موارد منتظم (URI). يجب ضبط سمة
schemeواحدة على الأقل للفلتر، وإلا لن يكون لأي من سمات URI الأخرى أي معنى.يتم تحديد مخطط بدون النقطتين الرأسيتين اللاحقتين، مثل
httpبدلاً منhttp:.إذا كان الفلتر يتضمّن نوع بيانات محدّدًا (باستخدام السمة
mimeType) ولكن بدون مخطط، سيتم افتراض المخططَينcontent:وfile:.ملاحظة: إنّ مطابقة المخطط في إطار عمل Android حسّاسة لحالة الأحرف، على عكس RFC. نتيجةً لذلك، يجب دائمًا تحديد المخططات باستخدام أحرف صغيرة.
android:host-
يشير إلى جزء المضيف من جهة معرّف الموارد المنتظم (URI). لا معنى لهذه السمة ما لم يتم تحديد السمة
schemeللفلتر أيضًا. لمطابقة نطاقات فرعية متعددة، استخدِم علامة النجمة (*) لمطابقة صفر أو أكثر من الأحرف في المضيف. على سبيل المثال، يتطابق المضيف*.google.comمعwww.google.comو.google.comوdeveloper.google.com.يجب أن تكون علامة النجمة هي الحرف الأول من سمة المضيف. على سبيل المثال، المضيف
google.co.*غير صالح لأنّ حرف البدل النجمي ليس الحرف الأول.ملاحظة: تتطابق أسماء المضيفين في إطار عمل Android مع حالة الأحرف، على عكس RFC الرسمي. نتيجةً لذلك، عليك دائمًا تحديد أسماء المضيفين باستخدام أحرف صغيرة.
android:port- جزء المنفذ من سلطة معرّف الموارد المنتظم (URI) لا تكون هذه السمة مفيدة إلا إذا تم تحديد السمتَين
schemeوhostللفلتر أيضًا. android:pathandroid:pathPrefixandroid:pathSuffixandroid:pathPatternandroid:pathAdvancedPattern- جزء المسار من معرّف الموارد الموحّد (URI)، والذي يجب أن يبدأ بـ
/تحدّد السمةpathمسارًا كاملاً تتم مطابقته مع المسار الكامل في عنصرIntent. تحدّد السمةpathPrefixمسارًا جزئيًا تتم مطابقته مع الجزء الأولي فقط من المسار في العنصرIntent.تتم مطابقة السمة
pathSuffixتمامًا مع الجزء الأخير من المسار في العنصرIntent، ولا يجب أن تبدأ هذه السمة بالحرف/.تحدّد السمة
pathPatternمسارًا كاملاً تتم مطابقته مع المسار الكامل في العنصرIntent، ولكن يمكن أن تحتوي على أحرف البدل التالية:-
تتطابق النقطة (
.) مع أي حرف مفرد. لمطابقة نقطة حرفية، يجب تخطّيها باستخدام\\.في ملف XML. -
تتطابق علامة النجمة (
*) مع تسلسل من صفر إلى عدة مرات من الحرف الذي يسبقها مباشرةً. على سبيل المثال، يتطابقa*مع "a" و"aa"، ولكن لا يتطابق مع سلسلة فارغة. -
تتطابق النقطة المتبوعة بعلامة نجمة (
.*) مع أي تسلسل من صفر أو أكثر من الأحرف. على سبيل المثال، يتطابق.*مع سلسلة فارغة، ويتطابقb.*مع "b" و"bc" و "bcd".
اعتبارات مهمة بشأن
pathPattern:- عدم التراجع: يقيّم برنامج مطابقة الأنماط في Android السلاسل في عملية تمرير واحدة للأمام بدون تراجع. إذا استهلك حرف البدل أحرفًا مطلوبة لاحقًا في النمط، ستتعذّر المطابقة.
-
.*غير حريص: حرف البدل.*غير حريص. يستهلك هذا العنصر الأحرف إلى أن يعثر على أول ظهور للحرف الحرفي التالي في النمط.-
"abc.*xyz"لن يطابق"abcpxqrxyz". يتوقف.*بشكل غير مباشر عند أول"x"(من"px..."). ولا يتطابق الجزء المتبقي من السلسلة"qrxyz"مع"yz"المتوقّع. -
تحذير: بما أنّ
.*يبحث عن تطابق تام للأحرف للتوقف، لن يتطابق"a.*.c"مع"abbbc". يتعامل برنامج المطابقة مع النقطة الثانية.كنقطة حرفية، ويبحث في السلسلة عن"."، ويتعذّر عليه العثور على تطابق عند الوصول إلى النهاية.
-
-
*هي مطابقة جشعة: الحرف المحدد الذي يتبعه علامة نجمية (مثلa*) هو مطابقة جشعة. يستهلك هذا التعبير جميع مرات الظهور المتتالية لهذا الحرف بدون البحث عن أحرف أخرى.-
"a*a"لن تطابق سلاسل مثل"aaa". يستهلك الجزءa*كل الأجزاء الثلاثة"a"بشكل نهم. يتوقّع النمط بعد ذلك ظهور"a"النهائي، ولكن السلسلة تكون قد استُنفدت، ما يؤدي إلى تعذُّر العثور على تطابق.
-
- أفضل الممارسات:
-
تجنَّب الأنماط التي يكون فيها الحرف الذي يلي
*مباشرةً هو نفسه الحرف الذي يسبقه (مثلاً،a*a). -
تجنَّب وضع أحرف بدل مباشرةً بعد
.*(مثلاً،.*.أو.*.*). -
إذا كنت تنوي مطابقة بادئة، من الأفضل والأكثر فعالية استخدام
android:pathPrefixبدلاً من إنهاءpathPatternبـ.*.
-
تجنَّب الأنماط التي يكون فيها الحرف الذي يلي
تحدّد السمة
pathAdvancedPatternمسارًا كاملاً تتم مطابقته مع المسار الكامل لعنصرIntent، وتتيح الأنماط التالية المشابهة للتعبيرات العادية:-
تتطابق النقطة (
.) مع أي حرف. -
تتطابق المجموعة (
[...]) مع نطاقات الأحرف. على سبيل المثال، يتطابق[0-5]مع رقم واحد من 0 إلى 5، ولكن ليس من 6 إلى 9.[a-zA-Z]تتطابق مع أي حرف، بغض النظر عن حالة الأحرف. تتيح المجموعات أيضًا استخدام المعدِّل "not"^. -
يتطابق المعدِّل النجمي (
*) مع النمط السابق صفر مرة أو أكثر. -
يتطابق المُعدِّل علامة الجمع (
+) مع النمط السابق مرة واحدة أو أكثر. -
يحدّد المعدِّل "النطاق" (
{...}) عدد المرات التي يمكن أن يتطابق فيها نمط.
pathAdvancedPatternهي عملية تنفيذ للتقييم يتم فيها إجراء المطابقة مع النمط في الوقت الفعلي بدون إمكانية التراجع.بما أنّ
\يُستخدَم كرمز الإلغاء عند قراءة السلسلة من تنسيق XML، يجب إلغاء الحرف مرتين قبل تحليله كنمط. على سبيل المثال، تتم كتابة الحرف*على النحو\\*، وتتم كتابة الحرف\على النحو\\\\. وهذا يشبه ما تكتبه عند إنشاء السلسلة في رمز Java البرمجي.لمزيد من المعلومات عن هذه الأنواع الخمسة من الأنماط، راجِع أوصاف
PATTERN_LITERALوPATTERN_PREFIXوPATTERN_SIMPLE_GLOBوPATTERN_SUFFIXوPATTERN_ADVANCED_GLOBفي فئةPatternMatcher.لا تكون هذه السمات مفيدة إلا إذا تم تحديد السمتَين
schemeوhostللفلتر أيضًا.تم تقديم السمتَين
pathSuffixوpathAdvancedPatternفي المستوى 31 من واجهة برمجة التطبيقات. -
تتطابق النقطة (
android:fragmentandroid:fragmentPrefixandroid:fragmentSuffixandroid:fragmentPatternandroid:fragmentAdvancedPattern-
أداة مطابقة لجزء من معرّف الموارد المنتظم (URI) لا تُدرِج البادئة
#. راجِع ما ورد أعلاه لمعرفة معنى الأنماط المسموح بها في كل سمة.لمطابقة الأحرف التي يتم عادةً ترميزها باستخدام URI، أدرِج النموذج الأولي (غير المرمّز) في قيمة السمة. على سبيل المثال، تتطابق
<data android:fragment="test!" />مع#test!و#test%21.تمت إضافة هذه السمة في المستوى 35 من واجهة برمجة التطبيقات.
android:queryandroid:queryPrefixandroid:querySuffixandroid:queryPatternandroid:queryAdvancedPattern-
أداة مطابقة لمَعلمة طلب بحث في معرّف الموارد المنتظم (URI) (وقيمة اختيارية). على سبيل المثال، يمكنك مطابقة عناوين URI التي تنتهي بـ
?param=valueمع<data android:query="param=value" />. لا تُدرِج البادئة?. راجِع ما ورد أعلاه لمعرفة معنى الأنماط المسموح بها في كل سمة.لمطابقة الأحرف التي يتم عادةً ترميزها باستخدام URI، يجب تضمين النموذج الأولي (غير المرمّز) في قيمة السمة. على سبيل المثال، تتطابق
<data android:query="test!" />مع?test!و?test%21.تمت إضافة هذه السمة في المستوى 35 من واجهة برمجة التطبيقات.
android:mimeType- نوع وسائط MIME، مثل
image/jpegأوaudio/mpeg4-genericيمكن أن يكون النوع الفرعي هو حرف البدل النجمة (*) للإشارة إلى أنّ أي نوع فرعي يطابق.من الشائع أن يعرّف فلتر الأهداف عنصر
<data>يتضمّن السمةandroid:mimeTypeفقط.ملاحظة: تتطلّب مطابقة أنواع MIME في إطار عمل Android تطابقًا دقيقًا لحالة الأحرف، على عكس أنواع MIME الرسمية في RFC. نتيجةً لذلك، يجب دائمًا تحديد أنواع MIME باستخدام أحرف صغيرة.
- تم إدخال القدرة لأول مرة في:
- مستوى واجهة برمجة التطبيقات 1
- راجِع أيضًا:
<action><category>
<data>
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2026-04-21 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2026-04-21 (حسب التوقيت العالمي المتفَّق عليه)"],[],[]]