أثناء إنشاء تطبيقك، من المهم مراعاة التطبيقات الأخرى على الجهاز التي يحتاج تطبيقك إلى التفاعل معها. إذا كان تطبيقك يستهدف Android 11 (المستوى 30 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث، سيجعل النظام بعض التطبيقات مرئية لتطبيقك تلقائيًا، ولكنّه سيستبعد تطبيقات أخرى تلقائيًا. يوضّح هذا الدليل كيفية إتاحة التطبيقات الأخرى لتطبيقك.
إذا كان تطبيقك يستهدف Android 11 أو الإصدارات الأحدث ويحتاج إلى التفاعل
مع تطبيقات أخرى غير التطبيقات المرئية تلقائيًا، أضِف العنصر
<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> هذا الوظيفة نفسها التي يملكها العنصر الذي يمكن للتطبيقات الإعلان عنه في بياناتها.
<!-- Place inside the <queries> element. --> <package android:name=PACKAGE_NAME />
من خلال تضمين هذا الإعلان، يمكنك التحقّق مما إذا كان التطبيق المضيف مثبّتًا و
التفاعل معه، مثلاً من خلال استدعاء
bindService().
يصبح التطبيق الذي يستدعي مكتبتك مرئيًا
تلقائيًا للتطبيق المضيف نتيجةً لـ
هذا التفاعل.
الحِزم التي تتطابق مع توقيع intent filter
قد يحتاج تطبيقك إلى طلب البحث أو التفاعل مع مجموعة من التطبيقات التي تخدم غرضًا معيّنًا، ولكن قد لا تعرف أسماء الحِزم المحدّدة التي يجب تضمينها. في هذه الحالة، يمكنك إدراج
توقيعات intent filter في عنصر
<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>واحد، يمكنك استخدام كلّ من السمات التالية مرة واحدة على الأكثر:mimeTypeschemehost
يمكنك توزيع هذه السمات على عدة عناصر
<data>أو استخدام ها في عنصر<data>واحد.
يتوافق العنصر <intent> مع حرف البدل العام (*) كـ
قيمة لبعض السمات:
- سمة
nameلعنصر<action> - النوع الفرعي لسمة
mimeTypeلعنصر<data>(image/*). - نوع وسمة
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
Play
إرشادات للتطبيقات التي تحتاج إلى إذن QUERY_ALL_PACKAGES.