تقديم بيان إذن الوصول إلى الحزمة

أثناء إنشاء تطبيقك، من المهم أن تأخذ في الاعتبار التطبيقات الأخرى على الجهاز. التي يحتاج تطبيقك إلى التفاعل معها. إذا كان تطبيقك يستهدف 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 للعنصر <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".