عند إنشاء تطبيقك، من المهم مراعاة التطبيقات الأخرى على الجهاز التي يحتاج تطبيقك إلى التفاعل معها. إذا كان تطبيقك يستهدف Android 11 (المستوى 30) أو الإصدارات الأحدث، يجعل النظام بعض التطبيقات مرئية التطبيق تلقائيًا، ولكنه يستبعد مع التطبيقات الأخرى افتراضيًا. يوضّح هذا الدليل كيفية إظهار التطبيقات الأخرى في تطبيقك.
إذا كان تطبيقك يستهدف الإصدار 11 من نظام التشغيل Android أو إصدارًا أحدث وكان يحتاج إلى التفاعل
مع تطبيقات غير التطبيقات التي تظهر تلقائيًا، أضِف العنصر
<queries>
فيملف بيان
تطبيقك. داخل العنصر <queries>
، حدد التطبيقات الأخرى عن طريق
اسم الحزمة، حسب توقيع النية،
أو من قِبل هيئة توفير الخدمة، كما هو موضّح في ما يلي
الأقسام.
أسماء حِزم محدّدة
إذا كنت تعرف التطبيقات المحددة التي تريد طلب البحث عنها أو التفاعل معها، مثل
التطبيقات التي تتكامل مع تطبيقك أو التطبيقات التي تستخدم خدماتها، تتضمن
أسماء الحِزم في مجموعة من <package>
العناصر داخل العنصر <queries>
:
<manifest package="com.example.game"> <queries> <package android:name="com.example.store" /> <package android:name="com.example.services" /> </queries> ... </manifest>
التواصل مع تطبيق مضيف في مكتبة
إذا كنت تُطوّر مكتبة Android، يمكنك تحديد متطلبات مستوى الوصول إلى الحزمة
من خلال إضافة عنصر <queries>
في ملف بيان AAR
. يمتلك عنصر <queries>
هذه الوظيفة نفسها التي يمتلكها العنصر الذي يمكن للتطبيقات الإفصاح عنه في بياناتها.
إذا كانت مكتبتك تتضمن تواصلاً مع تطبيق مضيف، مثل استخدام ملف
الخدمة، ضمِّن عنصر <package>
اسم حزمة تطبيق المضيف:
<!-- Place inside the <queries> element. --> <package android:name=PACKAGE_NAME />
من خلال تضمين هذا البيان، يمكنك التحقّق ممّا إذا كان التطبيق المضيف مثبّتًا أم لا
للتفاعل معها، مثل من خلال استدعاء
bindService()
تطبيق الاتصال الذي يستخدم مكتبتك يصبح تلقائيًا
مرئيًا للتطبيق المضيف نتيجة
هذا التفاعل.
الحِزم التي تتطابق مع توقيع فلتر الأهداف
قد يحتاج تطبيقك إلى طلب معلومات من مجموعة تطبيقات أو التفاعل معها لتحقيق هدف معيّن، ولكن قد لا تعرف أسماء الحِزم المحدّدة التي يجب تضمينها. في هذه الحالة، يمكنك إدراج
توقيعات فلاتر الأهداف في عنصر
<queries>
. يمكن لتطبيقك بعد ذلك اكتشاف التطبيقات التي تحتوي على عناصر
<intent-filter>
متطابقة.
يعرض مثال الرمز التالي عنصر <intent>
الذي يسمح للتطبيق.
للاطّلاع على التطبيقات المثبّتة الأخرى التي تتيح مشاركة الصور بتنسيق JPEG، يُرجى اتّباع الخطوات التالية:
<manifest package="com.example.game"> <queries> <intent> <action android:name="android.intent.action.SEND" /> <data android:mimeType="image/jpeg" /> </intent> </queries> ... </manifest>
هناك بعض القيود على العنصر <intent>
:
- يجب تضمين عنصر
<action>
واحد بالضبط. - لا يمكنك استخدام السمات
path
أوpathPrefix
أوpathPattern
أوport
. في العنصر<data>
. يتصرف النظام كما لو ضبطت قيمة كل سمة. إلى حرف البدل العام (*
). - لا يمكنك استخدام سمة
mimeGroup
لعنصر<data>
. ضمن عناصر
<data>
لعنصر<intent>
واحد، يمكنك استخدام كل من السمات التالية مرة واحدة بحد أقصى:mimeType
scheme
host
يمكنك توزيع هذه السمات على عدة عناصر
<data>
أو استخدام في عنصر<data>
واحد.
يتوافق العنصر <intent>
مع حرف البدل العام (*
) باعتباره
قيمة لبعض السمات وهي:
- السمة
name
للعنصر<action>
. - النوع الفرعي لسمة
mimeType
لعنصر<data>
(image/*
). - نوع سمة
mimeType
وفئة سمةmimeType
لعنصر<data>
(*/*
). - السمة
scheme
للعنصر<data>
. - السمة
host
للعنصر<data>
.
لا يدعم النظام
مزيج من الأحرف النصية وأحرف البدل، مثل prefix*
.
الحِزم التي تستخدم جهة إصدار معيّنة
إذا أردت إجراء طلب بحث عن محتوى
لكن
إذا كنت لا تعرف أسماء الحِزم المحدّدة، يمكنك تقديم بيان عن الجهة المقدِّمة للخدمة
في عنصر <provider>
كما هو موضّح
في المقتطف التالي:
<manifest package="com.example.suite.enterprise"> <queries> <provider android:authorities="com.example.settings.files" /> </queries> ... </manifest>
يمكنك الإفصاح عن مراجعي الخدمات في عنصر <queries>
واحد. ضمن العنصر
<queries>
، يمكنك تحديد عنصر <provider>
واحد أو أكثر. يمكن أن يتضمّن عنصر
<provider>
جهة مقدّمة واحدة أو
قائمة مفصولة بنقطتَي فاصلة لجهات مقدّمة.
جميع التطبيقات (غير مستحسن)
في حالات نادرة، قد يحتاج تطبيقك إلى طلب بيانات من جميع التطبيقات المثبّتة
على جهاز معيّن أو التفاعل معها، بغض النظر عن المكوّنات التي تحتوي عليها. للسماح لتطبيقك
جميع التطبيقات المثبّتة الأخرى، يوفّر النظام
QUERY_ALL_PACKAGES
إذن.
في ما يلي بعض الأمثلة على حالات الاستخدام التي
يمكن تضمين ما يلي في إذن QUERY_ALL_PACKAGES
:
- تطبيقات مخصّصة لتسهيل الاستخدام
- المتصفحات
- تطبيقات إدارة الأجهزة
- تطبيقات الأمان
- تطبيقات مكافحة الفيروسات
ومع ذلك، من الممكن عادةً تلبية استخدام تطبيقك. الحالات من خلال التفاعل مع مجموعة التطبيقات التي تظهر تلقائيًا ومن خلال الإعلان عن التطبيقات الأخرى التي يحتاج التطبيق إلى الوصول إليها في ملف البيان. إلى أن تحترم خصوصية المستخدم، فيجب أن يطلب التطبيق أقل قدر من الحزمة الحاجة إلى الظهور لكي يعمل التطبيق.
هذا التعديل على السياسة من Google
تشغيل
توفّر هذه السياسة إرشادات للتطبيقات التي تحتاج إلى إذن "QUERY_ALL_PACKAGES
".