בדומה לגרסאות קודמות, Android 16 כוללת שינויים בהתנהגות שיכולים להשפיע על האפליקציה שלכם. השינויים הבאים בהתנהגות חלים באופן בלעדי על אפליקציות שמטרגטות ל-Android 16 ואילך. אם האפליקציה שלכם מטרגטת ל-Android 16 ומעלה, עליכם לשנות את האפליקציה כך שתתמוך בהתנהגויות האלה, איפה שרלוונטי.
חשוב גם לעיין ברשימת השינויים בהתנהגות שמשפיעים על כל האפליקציות שפועלות ב-Android 16, בלי קשר לtargetSdkVersion
של האפליקציה.
חוויית משתמש וממשק משתמש של המערכת
Android 16 (רמת API 36) כולל את השינויים הבאים, שמטרתם ליצור חוויית משתמש עקבית ואינטואיטיבית יותר.
האפשרות להסיר את התצוגה מקצה לקצה תבוטל
ב-Android 15 נאכף מצב מקצה לקצה באפליקציות שמטרגטות ל-Android 15 (רמת API 35), אבל אפשר להשבית את המצב הזה באפליקציה על ידי הגדרת R.attr#windowOptOutEdgeToEdgeEnforcement
לערך true
. באפליקציות שמטרגטות ל-Android 16 (רמת API 36), R.attr#windowOptOutEdgeToEdgeEnforcement
הוצא משימוש ומושבת, ולא ניתן לבטל את ההגדרה של תצוגה מקצה לקצה באפליקציה.
- אם האפליקציה מטרגטת ל-Android 16 (רמת API 36) והיא פועלת במכשיר עם Android 15, התכונה
R.attr#windowOptOutEdgeToEdgeEnforcement
ממשיכה לפעול. - אם האפליקציה מטרגטת ל-Android 16 (רמת API 36) והיא פועלת במכשיר Android 16, המאפיין
R.attr#windowOptOutEdgeToEdgeEnforcement
מושבת.
כדי לבדוק ב-Android 16, מוודאים שהאפליקציה תומכת בתצוגה מקצה לקצה ומסירים את השימוש ב-R.attr#windowOptOutEdgeToEdgeEnforcement
כדי שהאפליקציה תתמוך בתצוגה מקצה לקצה גם במכשיר Android 15. כדי לתמוך בתצוגה מקצה לקצה, אפשר לעיין בהנחיות בנושא יצירה ותצוגות.
נדרשת העברה או ביטול הסכמה לחיזוי של תנועת החזרה
For apps targeting Android 16 (API level 36) or higher and running on an
Android 16 or higher device, the predictive back system animations
(back-to-home, cross-task, and cross-activity) are enabled by default.
Additionally, onBackPressed
is not called and
KeyEvent.KEYCODE_BACK
is not dispatched anymore.
If your app intercepts the back event and you haven't migrated to predictive
back yet, update your app to use supported back navigation APIs, or
temporarily opt out by setting the
android:enableOnBackInvokedCallback
attribute to false
in the
<application>
or <activity>
tag of your app's AndroidManifest.xml
file.
הוצאה משימוש והשבתה של ממשקי API אלגנטיים לגופנים
באפליקציות שמטרגטות ל-Android 15 (רמת API 35), מאפיין elegantTextHeight
TextView
מוגדר כ-true
כברירת מחדל, והגופן הקומפקטי מוחלף בגופן קריא הרבה יותר. אפשר לשנות את ההגדרה הזו על ידי הגדרת המאפיין elegantTextHeight
לערך false
.
ב-Android 16, המאפיין elegantTextHeight
הוצא משימוש. המערכת תתעלם מהמאפיין הזה ברגע שהאפליקציה תטרגט ל-Android 16. ממשקי ה-API האלה שולטים ב'גופנים של ממשק המשתמש', אבל הם יוצאים משימוש. לכן, צריך להתאים את הפריסות כדי להבטיח עיבוד עקבי של טקסט בעברית, בלאית, במיאנמר, בטמילית, בגוג'ראטית, בקנאדה, במלאיאלאם, באודיה, בטלוגו או בתאילנדית.

elegantTextHeight
באפליקציות שמטרגטות ל-Android
14 (רמת API 34) ומטה, או באפליקציות שמטרגטות ל-Android 15 (רמת API 35) ששינו את ברירת המחדל על ידי הגדרת המאפיין elegantTextHeight
ל-false
.
elegantTextHeight
באפליקציות שמטרגטות ל-Android
16 (רמת API 36), או באפליקציות שמטרגטות ל-Android 15 (רמת API 35) שלא
ביטלו את ברירת המחדל על ידי הגדרת המאפיין elegantTextHeight
לערך false
.פונקציונליות עיקרית
Android 16 (רמת API 36) כולל את השינויים הבאים שמשנים או מרחיבים יכולות ליבה שונות של מערכת Android.
אופטימיזציה של תזמון עבודה בתעריף קבוע
לפני הטירגוט ל-Android 16, אם scheduleAtFixedRate
החמיץ ביצוע של משימה כי הוא לא היה במחזור חיים תקין של תהליך, כל הביצועים שהוחמצו מתבצעים באופן מיידי כשהאפליקציה חוזרת למחזור חיים תקין.
כשמטרגטים ל-Android 16, פעולה אחת שהוחמצה של scheduleAtFixedRate
תושלם באופן מיידי כשהאפליקציה תחזור למחזור חיים תקין. שינוי ההתנהגות הזה צפוי לשפר את ביצועי האפליקציה. כדאי לבדוק את ההתנהגות הזו באפליקציה כדי לראות אם היא מושפעת.
אפשר גם לבדוק באמצעות מסגרת התאימות לאפליקציות ולהפעיל את הדגל STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS
compat.
גורמי צורה של מכשירים
Android 16 (רמת API 36) כולל את השינויים הבאים באפליקציות כשמציגים אותן במכשירים עם מסך גדול.
פריסות מותאמות
אפליקציות ל-Android פועלות עכשיו במגוון מכשירים (כמו טלפונים, טאבלטים, מכשירים מתקפלים, מחשבים, מכוניות וטלוויזיות) ובמצבי חלונות במסכים גדולים (כמו מסך מפוצל וחלונות במחשב). לכן, מפתחים צריכים ליצור אפליקציות ל-Android שמותאמות לכל גודל מסך וחלון, ללא קשר לכיוון המכשיר. פרדיגמות כמו הגבלת הכיוון והגבלת שינוי הגודל הן מגבילות מדי בעולם של היום, שבו משתמשים במספר מכשירים.
התעלמות מהגבלות על כיוון, שינוי גודל ויחס גובה-רוחב
באפליקציות שמטרגטות ל-Android 16 (רמת API 36), מערכת Android 16 כוללת שינויים באופן שבו המערכת מנהלת הגבלות על כיוון, שינוי גודל ויחס גובה-רוחב. ההגבלות לא חלות יותר על מסכים עם רוחב מינימלי של 600dp ומעלה. האפליקציות ממלאות גם את כל חלון התצוגה, ללא קשר ליחס הגובה-רוחב או לכיוון המועדף על המשתמש, ולא נעשה שימוש ב-pillarboxing.
השינוי הזה מציג התנהגות חדשה של הפלטפורמה. מערכת Android עוברת למודל שבו האפליקציות צריכות להתאים את עצמן לכיוונים שונים, לגדלים שונים של מסכים וליחסי גובה-רוחב שונים. הגבלות כמו כיוון קבוע או שינוי גודל מוגבל פוגעות ביכולת ההתאמה של האפליקציה, ולכן מומלץ להפוך את האפליקציה לדינמית כדי לספק את חוויית המשתמש הטובה ביותר האפשרית.
אפשר גם לבדוק את ההתנהגות הזו באמצעות מסגרת התאימות של האפליקציה והפעלת דגל התאימות UNIVERSAL_RESIZABLE_BY_DEFAULT
.
שינויי תוכנה נפוצים שעלולים לגרום לכשלים
התעלמות מהגבלות על כיוון, שינוי גודל ויחס גובה-רוחב עשויה להשפיע על ממשק המשתמש של האפליקציה במכשירים מסוימים, במיוחד על רכיבים שנועדו לפריסות קטנות שמוגבלות לכיוון לאורך: לדוגמה, בעיות כמו פריסות מתוחות ואנימציות ורכיבים מחוץ למסך. הנחות לגבי יחס הגובה-רוחב או האוריינטציה עלולות לגרום לבעיות חזותיות באפליקציה. מידע נוסף על דרכים להימנע מבעיות כאלה ולשפר את ההתנהגות ההסתגלותית של האפליקציה.
התרת סיבוב המכשיר גורמת ליצירה מחדש של יותר פעילות, מה שעלול לגרום לאובדן מצב המשתמש אם הוא לא נשמר בצורה נכונה. במאמר שמירת מצבי ממשק משתמש מוסבר איך לשמור את מצב ממשק המשתמש בצורה נכונה.
פרטי ההטמעה
המאפיינים הבאים במניפסט וממשקי ה-API בזמן הריצה מושבתים במכשירים עם מסך גדול במצב מסך מלא ובמצב מרובה חלונות:
screenOrientation
resizableActivity
minAspectRatio
maxAspectRatio
setRequestedOrientation()
getRequestedOrientation()
המערכת מתעלמת מהערכים הבאים של screenOrientation
, setRequestedOrientation()
ו-getRequestedOrientation()
:
portrait
reversePortrait
sensorPortrait
userPortrait
landscape
reverseLandscape
sensorLandscape
userLandscape
לגבי שינוי הגודל של התצוגה, android:resizeableActivity="false"
, android:minAspectRatio
ו-android:maxAspectRatio
לא משפיעים.
באפליקציות שמיועדות ל-Android 16 (רמת API 36), המערכת מתעלמת כברירת מחדל מהגבלות על כיוון האפליקציה, שינוי הגודל ויחס הגובה-רוחב במסכים גדולים. עם זאת, כל אפליקציה שלא מוכנה באופן מלא יכולה לבטל את ההתנהגות הזו באופן זמני על ידי ביטול ההסכמה (מה שגורם להצבת האפליקציה במצב תאימות, כמו בגרסאות קודמות).
חריגים
ההגבלות על כיוון, שינוי גודל ויחס גובה-רוחב ב-Android 16 לא חלות במצבים הבאים:
- משחקים (מבוססים על הדגל של
android:appCategory
) - משתמשים שמביעים הסכמה מפורשת להתנהגות ברירת המחדל של האפליקציה בהגדרות יחס הגובה-רוחב של המכשיר
- מסכים שקטנים מ-
sw600dp
ביטול זמני של ההסכמה
כדי לבטל את ההסכמה לפעילות ספציפית, צריך להצהיר על מאפיין המניפסט PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY
:
<activity ...>
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
...
</activity>
אם יותר מדי חלקים באפליקציה לא מוכנים ל-Android 16, אפשר לבטל את ההסכמה באופן מלא על ידי החלת אותה מאפיין ברמת האפליקציה:
<application ...>
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
</application>
בריאות וכושר
Android 16 (רמת API 36) כולל את השינויים הבאים שקשורים לנתוני בריאות וכושר.
הרשאות גישה לנתוני הבריאות והכושר
For apps targeting Android 16 (API level 36) or higher,
BODY_SENSORS
permissions use more granular permissions
under android.permissions.health
, which Health Connect
also uses. As of Android 16, any API previously requiring BODY_SENSORS
or BODY_SENSORS_BACKGROUND
requires the corresponding
android.permissions.health
permission instead. This affects the following data
types, APIs, and foreground service types:
HEART_RATE_BPM
from Health Services on Wear OSSensor.TYPE_HEART_RATE
from Android Sensor ManagerheartRateAccuracy
andheartRateBpm
fromProtoLayout
on Wear OSFOREGROUND_SERVICE_TYPE_HEALTH
where the respectiveandroid.permission.health
permission is needed in place ofBODY_SENSORS
If your app uses these APIs, it should request the respective granular permissions:
- For while-in-use monitoring of Heart Rate, SpO2, or Skin Temperature:
request the granular permission under
android.permissions.health
, such asREAD_HEART_RATE
instead ofBODY_SENSORS
. - For background sensor access: request
READ_HEALTH_DATA_IN_BACKGROUND
instead ofBODY_SENSORS_BACKGROUND
.
These permissions are the same as those that guard access to reading data from Health Connect, the Android datastore for health, fitness, and wellness data.
Mobile apps
Mobile apps migrating to use the READ_HEART_RATE
and other granular
permissions must also declare an activity to display
the app's privacy policy. This is the same requirement as Health Connect.
קישוריות
Android 16 (רמת API 36) כולל את השינויים הבאים במערך Bluetooth לשיפור הקישוריות למכשירי ציוד היקפי.
כוונה חדשה לטיפול באובדן של קשרים ושינויים בהצפנה
As part of the Improved bond loss handling, Android 16 also introduces 2 new intents to provide apps with greater awareness of bond loss and encryption changes.
Apps targeting Android 16 can now:
- Receive an
ACTION_KEY_MISSING
intent when remote bond loss is detected, allowing them to provide more informative user feedback and take appropriate actions. - Receive an
ACTION_ENCRYPTION_CHANGE
intent whenever encryption status of the link changes. This includes encryption status change, encryption algorithm change, and encryption key size change. Apps must consider the bond restored if the link is successfully encrypted upon receivingACTION_ENCRYPTION_CHANGE
intent later.
Adapting to varying OEM implementations
While Android 16 introduces these new intents, their implementation and broadcasting can vary across different device manufacturers (OEMs). To ensure your app provides a consistent and reliable experience across all devices, developers should design their bond loss handling to gracefully adapt to these potential variations.
We recommend the following app behaviors:
If the
ACTION_KEY_MISSING
intent is broadcast:The ACL (Asynchronous Connection-Less) link will be disconnected by the system, but the bond information for the device will be retained (as described here).
Your app should use this intent as the primary signal for bond loss detection and guiding the user to confirm the remote device is in range before initiating device forgetting or re-pairing.
If a device disconnects after
ACTION_KEY_MISSING
is received, your app should be cautious about reconnecting, as the device may no longer be bonded with the system.If the
ACTION_KEY_MISSING
intent is NOT broadcast:The ACL link will remain connected, and the bond information for the device will be removed by the system, same to behavior in Android 15.
In this scenario, your app should continue its existing bond loss handling mechanisms as in previous Android releases, to detect and manage bond loss events.
דרך חדשה להסרת שיוך Bluetooth
כל האפליקציות שמטרגטות את Android 16 יכולות עכשיו לבטל את ההתאמה של מכשירי Bluetooth באמצעות API ציבורי ב-CompanionDeviceManager
. אם מכשיר נלווה מנוהל כשיוך CDM, האפליקציה יכולה להפעיל הסרה של קישור Bluetooth באמצעות ה-API החדש removeBond(int)
במכשיר המשויך. האפליקציה יכולה לעקוב אחרי השינויים במצב החיבור על ידי האזנה לאירוע השידור של מכשיר ה-Bluetooth ACTION_BOND_STATE_CHANGED
.
אבטחה
Android 16 (רמת API 36) כולל את שינויי האבטחה הבאים.
נעילת גרסה של MediaStore
באפליקציות שמטרגטות ל-Android מגרסה 16 ואילך, הערך של MediaStore#getVersion()
יהיה עכשיו ייחודי לכל אפליקציה. כך, מחריגים את המאפיינים המזהים ממחרוץ הגרסה כדי למנוע ניצול לרעה ושימוש בשיטות ליצירת טביעות אצבע. אפליקציות לא צריכות להניח דבר לגבי הפורמט של הגרסה הזו. האפליקציות כבר אמורות לטפל בשינויים בגרסאות כשמשתמשים ב-API הזה, וברוב המקרים לא צריך לשנות את ההתנהגות הנוכחית שלהן, אלא אם המפתח ניסה להסיק מידע נוסף מעבר להיקף המיועד של ה-API הזה.
כוונות בטוחות יותר
The Safer Intents feature is a multi-phase security initiative designed to improve the security of Android's intent resolution mechanism. The goal is to protect apps from malicious actions by adding checks during intent processing and filtering intents that don't meet specific criteria.
In Android 15 the feature focused on the sending app, now with Android 16, shifts control to the receiving app, allowing developers to opt-in to strict intent resolution using their app manifest.
Two key changes are being implemented:
Explicit Intents Must Match the Target Component's Intent Filter: If an intent explicitly targets a component, it should match that component's intent filter.
Intents Without an Action Cannot Match any Intent Filter: Intents that don't have an action specified shouldn't be resolved to any intent filter.
These changes only apply when multiple apps are involved and don't affect intent handling within a single app.
Impact
The opt-in nature means that developers must explicitly enable it in their app manifest for it to take effect. As a result, the feature's impact will be limited to apps whose developers:
- Are aware of the Safer Intents feature and its benefits.
- Actively choose to incorporate stricter intent handling practices into their apps.
This opt-in approach minimizes the risk of breaking existing apps that may rely on the current less-secure intent resolution behavior.
While the initial impact in Android 16 may be limited, the Safer Intents initiative has a roadmap for broader impact in future Android releases. The plan is to eventually make strict intent resolution the default behavior.
The Safer Intents feature has the potential to significantly enhance the security of the Android ecosystem by making it more difficult for malicious apps to exploit vulnerabilities in the intent resolution mechanism.
However, the transition to opt-out and mandatory enforcement must be carefully managed to address potential compatibility issues with existing apps.
Implementation
Developers need to explicitly enable stricter intent matching using the
intentMatchingFlags
attribute in their app manifest.
Here is an example where the feature is opt-in for the entire app,
but disabled/opt-out on a receiver:
<application android:intentMatchingFlags="enforceIntentFilter">
<receiver android:name=".MyBroadcastReceiver" android:exported="true" android:intentMatchingFlags="none">
<intent-filter>
<action android:name="com.example.MY_CUSTOM_ACTION" />
</intent-filter>
<intent-filter>
<action android:name="com.example.MY_ANOTHER_CUSTOM_ACTION" />
</intent-filter>
</receiver>
</application>
More on the supported flags:
Flag Name | Description |
---|---|
enforceIntentFilter | Enforces stricter matching for incoming intents |
none | Disables all special matching rules for incoming intents. When specifying multiple flags, conflicting values are resolved by giving precedence to the "none" flag |
allowNullAction | Relaxes the matching rules to allow intents without an action to match. This flag to be used in conjunction with "enforceIntentFilter" to achieve a specific behavior |
Testing and Debugging
When the enforcement is active, apps should function correctly if the intent
caller has properly populated the intent.
However, blocked intents will trigger warning log messages like
"Intent does not match component's intent filter:"
and "Access blocked:"
with the tag "PackageManager."
This indicates a potential issue that could impact the app and requires
attention.
Logcat filter:
tag=:PackageManager & (message:"Intent does not match component's intent filter:" | message: "Access blocked:")
פרטיות
Android 16 (רמת API 36) כולל את השינויים הבאים בנושא פרטיות.
הרשאה לגישה לרשת המקומית
כל אפליקציה שיש לה הרשאה INTERNET
יכולה לגשת למכשירים ברשת המקומית.
כך קל לאפליקציות להתחבר למכשירים מקומיים, אבל יש לכך גם השלכות על הפרטיות, כמו יצירת טביעת אצבע של המשתמש ושימוש ב-proxy למיקום.
מטרת הפרויקט Local Network Protections (הגנות על הרשת המקומית) היא להגן על פרטיות המשתמש באמצעות הגבלת הגישה לרשת המקומית מאחורי הרשאת זמן ריצה חדשה.
תוכנית ההשקה
השינוי הזה יוטמע בין שתי גרסאות, 25Q2 ו-TBD בהתאמה. חשוב מאוד שמפתחים יפעלו לפי ההנחיות האלה ב-25Q2 וישתפו משוב, כי אמצעי ההגנה האלה יאכפו בגרסת Android מאוחרת יותר. בנוסף, הם יצטרכו לעדכן תרחישים שתלויים בגישה מרומזת לרשת מקומית באמצעות ההנחיות הבאות, ולהתכונן לדחייה של המשתמשים ולביטול ההרשאה החדשה.
השפעה
בשלב הנוכחי, LNP היא תכונה אופציונלית, כלומר היא תשפיע רק על האפליקציות שהביעו הסכמה לשימוש בה. המטרה של שלב ההצטרפות היא לאפשר למפתחי אפליקציות להבין אילו חלקים באפליקציה שלהם תלויים בגישה מרומזת לרשת המקומית, כדי שיוכלו להתכונן להגנה באמצעות הרשאות בגרסה הבאה.
האפליקציות יושפעו אם הן ניגשות לרשת המקומית של המשתמש באמצעות:
- שימוש ישיר או שימוש בספרייה של שקעים גולמיים בכתובות של רשת מקומית (למשל, פרוטוקול mDNS או פרוטוקול SSDP לזיהוי שירותים)
- שימוש במחלקות ברמת המסגרת שיש להן גישה לרשת המקומית (למשל, NsdManager)
כדי להעביר תנועה אל כתובת ברשת מקומית וממנה, צריך הרשאת גישה לרשת מקומית. בטבלה הבאה מפורטים כמה מקרים נפוצים:
פעולה ברשת ברמה נמוכה באפליקציה | נדרשת הרשאה לגישה לרשת המקומית |
---|---|
יצירת חיבור TCP יוצא | כן |
אישור חיבורי TCP נכנסים | כן |
שליחת שידור יחיד, שידור לקבוצה או שידור לכולם באמצעות UDP | כן |
קבלת שידור יחיד, שידור מרובה או שידור לכל כתובת ב-UDP | כן |
ההגבלות האלה מוטמעות עמוק במערך של רשתות, ולכן הן חלות על כל ממשקי ה-API של הרשתות. הנתונים כוללים שקעים שנוצרו בקוד מקורי או בקוד מנוהל, ספריות רשת כמו Cronet ו-OkHttp, וכל ממשקי API שהוטמעו מעל אלה. כדי לפתור בעיות בשירותים ברשת המקומית (כלומר, שירותים עם הסיומת .local) צריך הרשאה לרשת המקומית.
חריגים לכללים שלמעלה:
- אם שרת ה-DNS של מכשיר נמצא ברשת מקומית, לא נדרשת הרשאת גישה לרשת המקומית כדי להעביר תנועה אל המכשיר או ממנו (בפורט 53).
- אפליקציות שמשתמשות בכלי לבחירת פלט בתור הכלי לבחירת פלט בתוך האפליקציה לא יצטרכו הרשאות גישה לרשת המקומית (הנחיות נוספות יפורסמו ברבעון הרביעי של 2025).
הנחיות למפתחים (אופציונלי)
כדי להפעיל הגבלות על הרשת המקומית:
- מבצעים Flash למכשיר לגרסה עם 25Q2 Beta 3 ואילך.
- מתקינים את האפליקציה שרוצים לבדוק.
החלפת מצב הדגל Appcompat ב-adb:
adb shell am compat enable RESTRICT_LOCAL_NETWORK <package_name>
הפעלה מחדש של המכשיר
עכשיו הגישה של האפליקציה לרשת המקומית מוגבלת, וכל ניסיון לגשת לרשת המקומית יוביל לשגיאות בשקע. אם אתם משתמשים בממשקי API שמבצעים פעולות ברשת המקומית מחוץ לתהליך של האפליקציה (לדוגמה: NsdManager), הם לא יושפעו במהלך שלב ההצטרפות.
כדי לשחזר את הגישה, צריך לתת לאפליקציה הרשאה לNEARBY_WIFI_DEVICES
.
- מוודאים שהאפליקציה מצהירה על ההרשאה
NEARBY_WIFI_DEVICES
במניפסט שלה. - עוברים אל הגדרות > אפליקציות > [שם האפליקציה] > הרשאות > מכשירים בקרבת מקום > אישור.
עכשיו הגישה של האפליקציה לרשת המקומית אמורה להיות משוחזרת, וכל התרחישים אמורים לפעול כמו לפני שהאפליקציה נכללה בהסכמה.
אחרי שהאכיפה של ההגנה על הרשת המקומית תתחיל, כך תושפע תנועת הרשת של האפליקציה.
הרשאה | בקשה יוצאת ב-LAN | בקשה יוצאת/נכנסת לאינטרנט | בקשה נכנסת ב-LAN |
---|---|---|---|
הוענקה | Microsoft Works | Microsoft Works | Microsoft Works |
לא הוענקה גישה | פספוסים | Microsoft Works | פספוסים |
כדי להשבית את הדגל App-Compat, משתמשים בפקודה הבאה
adb shell am compat disable RESTRICT_LOCAL_NETWORK <package_name>
שגיאות
שגיאות שנובעות מהמגבלות האלה יוחזרו לשקע הקורא בכל פעם שהוא מפעיל שליחה או גרסה של שליחה לכתובת ברשת מקומית.
דוגמאות לשגיאות:
sendto failed: EPERM (Operation not permitted)
sendto failed: ECONNABORTED (Operation not permitted)
הגדרה של רשת מקומית
רשת מקומית בפרויקט הזה היא רשת IP שמשתמשת בממשק רשת עם יכולת שידור, כמו Wi-Fi או Ethernet, אבל לא כוללת חיבורים סלולריים (WWAN) או חיבורי VPN.
הערוצים הבאים נחשבים לערוצים מקומיים:
IPv4:
- 169.254.0.0/16 // Link Local
- 100.64.0.0/10 // CGNAT
- 10.0.0.0/8 // RFC1918
- 172.16.0.0/12 // RFC1918
- 192.168.0.0/16 // RFC1918
IPv6:
- קישור מקומי
- מסלולים שמקושרים ישירות
- רשתות Stub כמו Thread
- Multiple-subnets (TBD)
בנוסף, גם כתובות מולטיקאסט (224.0.0.0/4, ff00::/8) וגם כתובת ה-IPv4 לשידור (255.255.255.255) מסווגות ככתובות של רשת מקומית.
תמונות בבעלות האפליקציה
כשמוצגת בקשה להענקת הרשאות גישה לתמונות ולסרטונים מאפליקציה שתואמת ל-SDK מגרסה 36 ואילך במכשירים עם Android מגרסה 16 ואילך, משתמשים שבוחרים להגביל את הגישה למדיה שנבחרה יראו את כל התמונות שבבעלות האפליקציה שנבחרו מראש בבורר התמונות. המשתמשים יכולים לבטל את הבחירה של כל אחד מהפריטים שנבחרו מראש, וכך לבטל את הגישה של האפליקציה לתמונות ולסרטונים האלה.