التغييرات في السلوك: التطبيقات التي تستهدف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث

كما في الإصدارات السابقة، يتضمّن Android 13 تغييرات في السلوك قد تؤثّر في التطبيق. تنطبق التغييرات التالية في السلوك حصريًا على التطبيقات التي تستهدف المستخدمين الإصدار 13 من نظام التشغيل Android أو إصدار أحدث إذا كان تطبيقك يستهدف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث، عليك تعديل تطبيقك لإتاحة هذه السلوكيات بشكل صحيح، حيثما ينطبق ذلك

تأكد أيضًا من مراجعة قائمة تغييرات السلوك التي تؤثر في جميع التطبيقات يعمل بنظام التشغيل Android 13.

الخصوصية

يؤثر إذن إرسال الإشعارات في مظهر الخدمة التي تعمل في المقدّمة.

إذا رفض المستخدم إذن إرسال الإشعارات عدم ظهور إشعارات ذات صلة بالخدمات التي تعمل في المقدّمة في درج الإشعارات. ومع ذلك، سيظل بإمكان المستخدمين الاطّلاع على إشعارات ذات صلة بالخدمات التي تعمل في المقدّمة في مدير المهام، بغض النظر عما إذا تم منح إذن إرسال الإشعارات أم لا.

إذن تشغيل جديد لأجهزة Wi-Fi القريبة

في الإصدارات السابقة من Android، على المستخدم منح تطبيقك ACCESS_FINE_LOCATION إذن لإكمال العديد من حالات استخدام Wi-Fi الشائعة.

لأنّه يصعب على المستخدمين ربط أذونات تحديد الموقع الجغرافي بشبكة Wi-Fi الجديدة، يقدّم Android 13 (المستوى 33) إذن التشغيل في NEARBY_DEVICES مجموعة أذونات للتطبيقات التي تدير عمليات ربط الجهاز بإمكانية الوصول عن قرب عبر شبكة Wi-Fi. هذا الإذن، NEARBY_WIFI_DEVICES، تلبية حالات استخدام Wi-Fi مثل ما يلي:

  • يمكنك العثور على الأجهزة المجاورة أو الاتصال بها، مثل الطابعات أو أجهزة بث الوسائط. يسمح سير العمل هذا لتطبيقك بإنجاز هذه الأنواع من المهام:
    • تلقّي معلومات AP خارج النطاق، مثل BLE.
    • يمكنك اكتشاف الأجهزة وربطها عبر خدمة Wi-Fi Aware والاتصال باستخدام نقطة اتصال محلية فقط.
    • اكتشاف الأجهزة والاتصال بها من خلال شبكة Wi-Fi المباشرة
  • يمكنك بدء الاتصال بمعرّف SSID معروف، مثل سيارة أو جهاز منزلي ذكي.
  • شغِّل نقطة اتصال محلية فقط.
  • النطاق للأجهزة المجاورة التي تستخدم Wi-Fi Aware

ما دام تطبيقك لا يستمِد معلومات الموقع الجغرافي الفعلي من شبكة Wi-Fi. واجهات برمجة التطبيقات، يمكنك طلب NEARBY_WIFI_DEVICES بدلاً من ACCESS_FINE_LOCATION عند استهداف الإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث واستخدام واجهات برمجة تطبيقات Wi-Fi. حالات الإفصاح إذن NEARBY_WIFI_DEVICES، يجب التأكيد بشدة على أنّ تطبيقك لا يتم مطلقًا يستمد معلومات الموقع الفعلي من واجهات برمجة تطبيقات Wi-Fi. ولإجراء ذلك، عيِّن سمة android:usesPermissionFlags إلى neverForLocation هذه العملية مشابه لتلك المتاحة في Android 12 (المستوى 31) والإصدارات الأحدث عند التأكيد على أنه لا يتم استخدام معلومات جهاز البلوتوث مطلقًا الموقع الجغرافي.

يُرجى الاطّلاع على مزيد من المعلومات حول كيفية اطلب إذن الوصول إلى أجهزة Wi-Fi القريبة.

أذونات دقيقة للوسائط

الزران في مربع الحوار، من أعلى إلى أسفل هما "السماح" و"عدم"
  سماح
الشكل 1. مربّع حوار أذونات النظام الذي يظهر للمستخدم عند عليك طلب إذن "READ_MEDIA_AUDIO".

إذا كان تطبيقك يستهدف نظام التشغيل Android 13 أو الإصدارات الأحدث ويحتاج إلى والوصول إلى ملفات الوسائط التي تمتلكها التطبيقات الأخرى تم إنشاؤه، يجب طلب إذن واحد أو أكثر من أذونات الوسائط الدقيقة التالية بدلاً من READ_EXTERNAL_STORAGE الإذن:

نوع الوسائط إذن للطلب
الصور الفوتوغرافية والصور READ_MEDIA_IMAGES
الفيديوهات READ_MEDIA_VIDEO
ملفات صوتية READ_MEDIA_AUDIO

قبل الوصول إلى ملفات الوسائط لتطبيق آخر، تحقق من أن المستخدم منح أذونات الوسائط الدقيقة والمناسبة لتطبيقك

يوضّح الشكل 1 تطبيقًا يطلب إذن READ_MEDIA_AUDIO.

إذا طلبت إذن "READ_MEDIA_IMAGES" بالإضافة إلى إذن READ_MEDIA_VIDEO في الوقت نفسه، إذن نظام واحد فقط سيظهر مربع حوار.

إذا سبق أن تم منح تطبيقك READ_EXTERNAL_STORAGE ثم يتم منح أي أذونات READ_MEDIA_* المطلوبة تلقائيًا عند الترقية. يمكنك استخدام أمر ADB التالي لمراجعة الأذونات التي تمت ترقيتها:

adb shell cmd appops get --uid PACKAGE_NAME

يجب منح إذن جديد لاستخدام أجهزة استشعار الجسم في الخلفية

Android 13 يقدِّم مفهوم "أثناء الاستخدام" وصول إلى أجهزة استشعار الجسم، مثل معدّل نبضات القلب ودرجة الحرارة ونسبة الأكسجين في الدم. هذا النمط يشبه إلى حد كبير النموذج الذي قدمه النظام للموقع في نظام التشغيل Android 10 (المستوى 29).

ما إذا كان تطبيقك يستهدف نظام التشغيل Android 13 ويتطلّب الوصول إلى أداة استشعار الجسم المعلومات أثناء تشغيلها في الخلفية، يجب أن تعلن عن BODY_SENSORS_BACKGROUND بالإضافة إلى الإذن الحالي BODY_SENSORS إذن.

الأداء والبطارية

استخدام موارد البطارية

إذا وضع المستخدِم تطبيقك في "مقيَّد" الولاية في استخدام البطارية في الخلفية عندما يستهدف تطبيقك نظام التشغيل Android 13، لا يوفّر النظام BOOT_COMPLETED البث أو LOCKED_BOOT_COMPLETED حتى بدء تشغيل تطبيقك لأسباب أخرى.

تجربة المستخدم

عناصر التحكّم في الوسائط المستمدة من PlaybackState

بالنسبة إلى التطبيقات التي تستهدف الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يستخرج النظام أدوات التحكم في الوسائط من PlaybackState. هذا النمط يسمح للنظام بعرض مجموعة أكثر تفصيلاً من عناصر التحكم متسقة بين الهواتف والأجهزة اللوحية، وتتوافق أيضًا مع كيفية تأثير الوسائط عرض عناصر التحكم على أنظمة Android الأساسية الأخرى مثل Android Auto Android TV

يوضح الشكل 2 مثالاً على كيفية ظهور ذلك على هاتف أو جهاز لوحي، على التوالي.

أدوات التحكم في الوسائط من حيث كيفية ظهورها على الهواتف والأجهزة اللوحية،
            باستخدام مثال لعيّنة من مسار يوضّح طريقة ظهور الأزرار
الشكل 2: عناصر التحكّم في الوسائط على الهواتف والأجهزة اللوحية

قبل الإصدار 13 من نظام Android، عرض النظام ما يصل إلى خمسة إجراءات من MediaStyle. حسب ترتيب إضافتها. في الوضع المكثّف—على سبيل المثال، في الإعدادات السريعة المصغّرة—تصل إلى ثلاثة إجراءات محددة مع setShowActionsInCompactView() تم عرضهما.

بدءًا من الإصدار 13 من نظام Android، يعرض النظام ما يصل إلى خمسة أزرار إجراءات استنادًا إلى في PlaybackState كما هو موضَّح في الجدول التالي. في الوضع المكثّف، لا يتم دمج سوى أول ثلاثة سيتم عرض خانات الإجراءات. للتطبيقات التي لا تستهدف الإصدار 13 من نظام التشغيل Android أو تلك التي التي لا تتضمّن PlaybackState، سيعرض النظام عناصر تحكّم تستند إلى تمت إضافة قائمة Action إلى إشعار MediaStyle كما هو موضّح في الفقرة السابقة.

الشريحة الإجراء المعايير
1 تشغيل الولاية الحالية لـ PlaybackState هي واحدة مما يلي:
  • STATE_NONE
  • STATE_STOPPED
  • STATE_PAUSED
  • STATE_ERROR
مؤشر سريان العمل الولاية الحالية لـ PlaybackState هي واحدة مما يلي:
  • STATE_CONNECTING
  • STATE_BUFFERING
إيقاف مؤقت حالة PlaybackState الحالية هي لا شيء مما سبق.
2 الصفحة السابقة تشمل إجراءات PlaybackState ACTION_SKIP_TO_PREVIOUS.
قرض مخصص PlaybackState لا تشمل الإجراءات ACTION_SKIP_TO_PREVIOUS، بينما تتضمّن الإجراءات المخصّصة في PlaybackState إجراءً مخصّصًا لم يتم وضعه إلى الآن.
فارغ تتضمّن العناصر الإضافية في PlaybackState قيمة منطقية true للمفتاح SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_PREV.
3 التالي تشمل إجراءات PlaybackState ACTION_SKIP_TO_NEXT.
قرض مخصص PlaybackState لا تشمل الإجراءات ACTION_SKIP_TO_NEXT، بينما تتضمّن الإجراءات المخصّصة في PlaybackState إجراءً مخصّصًا لم يتم وضعه إلى الآن.
فارغ تتضمّن العناصر الإضافية في PlaybackState قيمة منطقية true للمفتاح SESSION_EXTRAS_KEY_SLOT_RESERVATION_SKIP_TO_NEXT.
4 قرض مخصص تتضمّن الإجراءات المخصّصة في PlaybackState إجراءً مخصّصًا لم يتم وضعه بعد.
5 قرض مخصص تتضمّن الإجراءات المخصّصة في PlaybackState إجراءً مخصّصًا لم يتم وضعه بعد.

يتم وضع الإجراءات المخصّصة بترتيب إضافتها إلى PlaybackState

تم تطبيق مظهر لون التطبيق تلقائيًا على محتوى WebView

بالنسبة إلى التطبيقات التي تستهدف الإصدار 13 من نظام التشغيل Android (المستوى 33 لواجهة برمجة التطبيقات) أو الإصدارات الأحدث، يجب: setForceDark() يتم إيقاف هذه الطريقة، مما يؤدي إلى عدم التنفيذ في حالة استدعاء الطريقة.

بدلاً من ذلك، يضبط WebView الآن الاستعلام عن الوسائط prefers-color-scheme بناءً على سمة مظهر التطبيق، isLightTheme بعبارة أخرى، هذه الكلمات، إذا كانت قيمة isLightTheme هي true أو لم يتم تحديدها، فإن prefers-color-scheme light؛ وإلا، فهو dark. يعني هذا السلوك أن محتوى الويب تطبيق النمط الفاتح أو الداكن تلقائيًا لمطابقة مظهر التطبيق إذا المحتوى يدعم ذلك.

بالنسبة إلى معظم التطبيقات، يجب أن يُطبّق السلوك الجديد أنماط التطبيقات المناسبة تلقائيًا، ولكن يجب عليك اختبار تطبيقك للتحقق من أي حالات تحكم يدويًا في إعدادات الوضع الداكن.

إذا كنت لا تزال بحاجة إلى تخصيص سلوك مظهر الألوان في تطبيقك، استخدِم setAlgorithmicDarkeningAllowed() بدلاً من ذلك. للتوافق مع الأنظمة القديمة مع إصدارات Android السابقة، أوصي باستخدام ما يعادل setAlgorithmicDarkeningAllowed() في AndroidX.

اطّلِع على المستندات الخاصة بتلك الطريقة لمعرفة المزيد عن السلوك الذي يمكنك تنفيذه. تتوقعه في تطبيقك اعتمادًا على targetSdkVersion والمظهر الإعدادات.

إمكانية الاتصال

تم إيقاف BluetoothAdapter#enable() وBluetoothAdapter#disable() نهائيًا.

بالنسبة إلى التطبيقات التي تستهدف Android 13 (المستوى 33) أو الإصدارات الأحدث، يجب اتّباع الخطوات التالية: BluetoothAdapter#enable() و تم إيقاف طريقتين (BluetoothAdapter#disable()) نهائيًا ودائمًا ما إرجاع false.

تُستثنى أنواع التطبيقات التالية من هذه التغييرات:

  • تطبيقات مالك الجهاز
  • تطبيقات مالك الملف الشخصي
  • تطبيقات النظام

خدمات Google Play

الإذن مطلوب للمعرِّف الإعلاني

التطبيقات التي تستخدم الإعلان من "خدمات Google Play" رقم التعريف استهداف الإصدار 13 من نظام التشغيل Android (المستوى 33) والإصدارات الأحدث الإفصاح عن إذن AD_ID العادي في التطبيق على النحو التالي:

<manifest ...>
    <!-- Required only if your app targets Android 13 or higher. -->
    <uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

    <application ...>
        ...
    </application>
</manifest>

إذا لم يوفّر تطبيقك بيان هذا الإذن عند استهداف الإصدار 13 من نظام التشغيل Android أو أعلى، تتم إزالة المعرِّف الإعلاني تلقائيًا واستبداله بسلسلة من الأصفار.

إذا كان تطبيقك يستخدم حِزم تطوير برامج (SDK) توضّح إذن "AD_ID" في مكتبة التطبيقات ملف البيان، فسيتم دمج الإذن مع ملف البيان لتطبيقك من خلال الافتراضي. في هذه الحالة، لا تحتاج إلى تقديم بيان عن الإذن في ملف manfiest.

لمزيد من المعلومات، يُرجى الاطّلاع على الإعلانات. رقم التعريف في مساعدة Play Console.

تم تعديل القيود غير المستندة إلى حزمة تطوير البرامج (SDK).

يتضمّن Android 13 قوائم معدَّلة بالحِزم المحظورة غير المستنِدة إلى حزمة تطوير البرامج (SDK) بناءً على التعاون مع مطوري برامج Android وأحدث للاختبار الداخلي. كلما أمكن، نتأكد من أن البدائل العامة قبل أن نحظر الواجهات التي لا تعتمد على حزمة SDK

إذا لم يكُن تطبيقك يستهدف الإصدار 13 من نظام التشغيل Android، إليك بعض هذه التغييرات على الفور. ومع ذلك، على الرغم من أنّه يمكنك حاليًا استخدام بعض الواجهات غير المستندة إلى حزمة تطوير البرامج (SDK) (بناءً على واجهة برمجة التطبيقات المستهدَفة في تطبيقك المستوى)، ينطوي استخدام أي حقل أو طريقة غير متوفرة في حزمة SDK دائمًا على مخاطرة كبيرة بإتلاف التطبيق.

إذا لم تكن متأكّدًا مما إذا كان تطبيقك يستخدم واجهات غير متوفرة في حزمة SDK، يمكنك اختبار التطبيق لمعرفة ذلك. إذا كان تطبيقك يعتمد على واجهات غير متوفرة في حزمة SDK، عليك بدء التخطيط نقل البيانات إلى بدائل حِزم SDK ومع ذلك، فإننا ندرك أن بعض التطبيقات لديها حالات استخدام صالحة لاستخدام واجهات غير متوفرة في حزمة SDK. إذا لم تتمكن من إيجاد بديل إلى استخدام واجهة غير متوفرة في حزمة SDK لإحدى الميزات في تطبيقك، عليك طلب واجهة برمجة تطبيقات عامة جديدة.

لمعرفة مزيد من المعلومات حول التغييرات في هذا الإصدار من نظام التشغيل Android، يمكنك الاطّلاع على التحديثات على القيود المفروضة على الواجهة غير المستندة إلى حزمة تطوير البرامج (SDK) في الإصدار 13 من نظام التشغيل Android. للمزيد من المعلومات عن الواجهات غير المستندة إلى حزمة تطوير البرامج (SDK) بوجهٍ عام، يُرجى الاطّلاع على المقالة القيود المفروضة على الواجهات غير المستنِدة إلى حزمة تطوير البرامج (SDK). الواجهات.