אפליקציות שמטרגטות את Android 13 (רמת API 33) ואילך וניהול חיבורי Wi-Fi
לבקש
NEARBY_WIFI_DEVICES
הרשאה בתחילת ההפעלה. הזה
ההרשאה הזו מאפשרת להצדיק בקלות את הגישה של אפליקציה למכשירי Wi-Fi בקרבת מקום.
בגרסאות קודמות של Android, האפליקציות האלה היו צריכות להצהיר על
ACCESS_FINE_LOCATION
במקום זאת.
ההרשאה היא חלק מקבוצת המכשירים בקרבת מקום
ההרשאה NEARBY_WIFI_DEVICES
היא חלק ממכשירים בקרבת מקום
קבוצת הרשאות. הקבוצה הזו, שנוספה ב-Android 12 (רמת API 31), כוללת גם
הרשאות שקשורות ל-Bluetooth ול-Ultra Wideband. כשמבקשים
השילוב של ההרשאות מקבוצת ההרשאות הזו, המערכת מציגה
תיבת דו-שיח של זמן ריצה שמבקשת מהמשתמש לאשר את הגישה של האפליקציה למכשירים בקרבת מקום.
בהגדרות המערכת, המשתמש צריך להפעיל או להשבית את האפשרות מכשירים בקרבת מקום.
הרשאות כקבוצה; לדוגמה, משתמשים לא יכולים להשבית את הגישה ל-Wi-Fi אבל
הגישה ל-Bluetooth הופעלה לאפליקציה נתונה.
הצהרה חזקה על כך שהאפליקציה לא מסתמכת על מיקום פיזי
כשמטרגטים ל-Android בגרסה 13 ואילך, כדאי לבדוק אם האפליקציה
תמיד יופק פרטי מיקום מממשקי API של Wi-Fi; אם לא,
ולהצהיר על זה. כדי לטענת הנכוֹנוּת הזו, צריך להגדיר את המאפיין usesPermissionFlags
כ-
neverForLocation
בקובץ המניפסט של האפליקציה, כפי שמוצג בקוד הבא
. התהליך הזה דומה לתהליך שמתבצע
להצהיר שאף פעם לא ייעשה שימוש במידע על מכשיר ה-Bluetooth לצורך מיקום:
<manifest ...> <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" /> <application ...> ... </application> </manifest>
לגרסאות קודמות ולחלק מממשקי ה-API נדרשת הרשאת מיקום
לחלק מממשקי ה-API של Wi-Fi נדרשת ההרשאה ACCESS_FINE_LOCATION
, גם
אפליקציה מטרגטת ל-Android 13 ואילך. דוגמאות:
שיטות מהמחלקה WifiManager
:
בנוסף, בגלל שההרשאה NEARBY_WIFI_DEVICES
זמינה רק
ב-Android מגרסה 13 ואילך, עליך לשמור את כל ההצהרות לגבי
ACCESS_FINE_LOCATION
כדי לספק תאימות לאחור של האפליקציה. אבל כל עוד האפליקציה
לא מסתמך בדרך אחרת על
פרטי מיקום מדויק:
צריך להגדיר את גרסת ה-SDK המקסימלית של ההרשאה הזו ל-32
, כפי שמוצג ב
את קטע הקוד הבא:
<manifest ...> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="32" /> <application ...> ... </application> </manifest>
חיפוש ממשקי API שדורשים את ההרשאה
אם האפליקציה שלכם מטרגטת את Android 13 ואילך, עליכם להצהיר על
הרשאה ל-NEARBY_WIFI_DEVICES
לקרוא לכל אחד מממשקי ה-API הבאים של Wi-Fi:
WifiManager
WifiAwareManager
WifiAwareSession
WifiP2pManager
WifiRttManager
תהליכי עבודה של גישה ל-Wi-Fi
איור 1 מציג את תהליך העבודה לגישה ל-Wi-Fi במכשירים שפועלים
Android 13 ואילך, לאפליקציות שמטרגטות
Android מגרסה 13 ואילך. שימו לב, כל עוד אתם מצהירים
האפליקציה לא מסיקה את המיקום הפיזי ממידע של מכשיר ה-Wi-Fi,
צריך להצהיר יותר על ההרשאה ACCESS_FINE_LOCATION
:
איור 2 מציג את תהליך העבודה לגישה ל-Wi-Fi במכשירים שפועלים
12L או פחות. לשים לב להסתמכות על
ההרשאה ACCESS_FINE_LOCATION
.