מערכת Android מאפשרת לאפליקציות ללמוד על שינויים דינמיים בקישוריות. משתמשים ב את המחלקות הבאות כדי לעקוב אחר שינויים בקישוריות ולהגיב אליהם:
ConnectivityManager
מודיע לאפליקציה על מצב הקישוריות במערכת.- המחלקה
Network
מייצגת אחת מהאפשרויות הרשתות שאליהן המכשיר מחובר. אפשר להשתמש ב-Network
כמפתח לאיסוף מידע על הרשת,ConnectivityManager
או כדי לקשר שקעים ברשת. כשהרשת מתנתק, אז אי אפשר להשתמש באובייקטNetwork
. גם אם המכשיר בשלב מאוחר יותר מתחבר מחדש לאותו מכשיר, אובייקטNetwork
חדש מייצג את ברשת החדשה. - האובייקט
LinkProperties
שמכיל מידע על הקישור לרשת, כמו רשימת ה-DNS שרתים, כתובות IP מקומיות ונתיבי רשת המותקנים עבור הרשת. NetworkCapabilities
מכיל מידע על מאפיינים של רשת, כמו מעביר (Wi-Fi, נייד, Bluetooth) ואת מה שהרשת יכולה לספק. לדוגמה, אפשר לשלוח שאילתה לאובייקט כדי לקבוע אם הרשת יכול לשלוח MMS, נמצא מאחורי פורטל שבוי או שמתבצע בו חיוב לפי שימוש בנתונים.
אפליקציות שמתעניינות במצב הקישוריות המיידי בכל זמן נתון יכולות
קוראים לשיטות ConnectivityManager
כדי לגלות מה סוג הרשת
זמינים. השיטות האלה שימושיות לניפוי באגים ומדי פעם לבדיקת
תמונת המצב של הקישוריות שזמינה בכל רגע נתון.
לעומת זאת, באופן הסינכרוני
ConnectivityManager
שיטות לא מדווחות לאפליקציה על כלום
אחרי שיחה, כך שהם לא מאפשרים לעדכן את ממשק המשתמש. הם גם לא יכולים לשנות את האפליקציה
התנהגות שמבוססת על ניתוק הרשת או על מקרים שבהם יכולות הרשת
שינוי.
הקישוריות עשויה להשתנות בכל שלב, ורוב האפליקציות צריכות לכלול
תצוגה תמיד רעננה ועדכנית של מצב הרשת במכשיר. האפליקציות יכולות
לרשום קריאה חוזרת (callback) אל ConnectivityManager
כדי לקבל התראה על שינויים
שחשובה עבורה. באמצעות הקריאה החוזרת, האפליקציה יכולה להגיב באופן מיידי לכל
שינוי רלוונטי בקישוריות, ללא צורך בעריכת סקרים יקרים
שעלול לפספס עדכונים מהירים.
באמצעות NetworkCallback
ודרכים אחרות לקבל מידע על
מצב הקישוריות של המכשיר לא דורש הרשאה מסוימת.
עם זאת, חלק מהרשתות כפופות להרשאות ספציפיות.
עבור
לדוגמה, יכול להיות שרשתות מוגבלות לא זמינות לאפליקציות. קישור אל
לרשת ברקע נדרשת ההרשאה CHANGE_NETWORK_STATE
. וחלק
יכול להיות שיידרשו הרשאות ספציפיות כדי להריץ שיחות. צריך לעיין
עבור כל שיחה, לקבלת פרטים.
קבלת מצב מיידי
מכשיר מבוסס Android יכול לנהל חיבורים רבים בו-זמנית.
כדי לקבל מידע על מצב הרשת הנוכחי, צריך קודם
מופע של ConnectivityManager
:
Kotlin
val connectivityManager = getSystemService(ConnectivityManager::class.java)
Java
ConnectivityManager connectivityManager = getSystemService(ConnectivityManager.class);
בשלב הבא, משתמשים במופע הזה כדי לקבל הפניה לרשת ברירת המחדל הנוכחית app:
Kotlin
val currentNetwork = connectivityManager.getActiveNetwork()
Java
Network currentNetwork = connectivityManager.getActiveNetwork();
אם האפליקציה מפנה לרשת, האפליקציה יכולה לבקש מידע לגביה:
Kotlin
val caps = connectivityManager.getNetworkCapabilities(currentNetwork) val linkProperties = connectivityManager.getLinkProperties(currentNetwork)
Java
NetworkCapabilities caps = connectivityManager.getNetworkCapabilities(currentNetwork); LinkProperties linkProperties = connectivityManager.getLinkProperties(currentNetwork);
כדי לקבל גישה לפונקציות שימושיות יותר, ניתן לרשום
NetworkCallback
למידע נוסף על רישום קריאה חוזרת ברשת:
האזנה לאירועי רשת.
יכולות רשת ומאפייני קישור
האובייקטים NetworkCapabilities
ו-LinkProperties
מספקים מידע על
את כל המאפיינים שהמערכת מכירה על רשת.
LinkProperties
האובייקט יודע על המסלולים, כתובות הקישור, שם הממשק, פרטי שרת ה-proxy (אם
ושרתי DNS. קוראים לשיטה הרלוונטית באובייקט LinkProperties
כדי לאחזר את המידע הדרוש.
האובייקט NetworkCapabilities
כולל מידע על התעבורה ברשת ועל היכולות שלהם.
תעבורה היא הפשטה של מדיום פיזי שעליו רשת
פועלת. דוגמאות נפוצות לאמצעי תחבורה הן אתרנט, Wi-Fi ונייד.
גם רשתות VPN ו-Wi-Fi מקצה לקצה יכולות לשמש להעברות.
ב-Android, לרשת מסוימת יכולות להיות מספר העברות בו-זמנית. דוגמה
זהו VPN שפועל גם באמצעות Wi-Fi וגם באמצעות רשתות סלולריות. ב-VPN יש
העברת נתונים ב-Wi-Fi, במכשירים ניידים וב-VPN. כדי לברר אם
יש תעבורה מסוימת, השתמשו
NetworkCapabilities.hasTransport(int)
עם אחד מהקבועים NetworkCapabilities.TRANSPORT_*
.
יכולת מתארת מאפיין של הרשת. יכולות לדוגמה:
MMS
, NOT_METERED
וגם INTERNET
. רשת עם יכולת MMS יכולה לשלוח
ולקבל הודעות של Multimedia Messaging Service ורשת ללא
לא יכולה. רשת עם היכולת NOT_METERED
לא מחייבת
משתמש לקבלת נתונים. האפליקציה יכולה לבדוק יכולות מתאימות באמצעות
NetworkCapabilities.hasCapability(int)
עם אחד מהקבועים NetworkCapabilities.NET_CAPABILITY_*
.
קבועי NET_CAPABILITY_*
השימושיים ביותר כוללים:
NET_CAPABILITY_INTERNET
: מציין שהרשת מוגדרת כדי לגשת לאינטרנט. מדובר בהגדרה ולא בפועל יכולת להגיע לשרתים ציבוריים. לדוגמה, ניתן להגדיר רשת לגשת לאינטרנט אבל להיות כפופים לפורטל שבוי.לרשת הסלולרית של ספק בדרך כלל יש את היכולת
INTERNET
, בדרך כלל לא פועלת רשת Wi-Fi מקומית בטכנולוגיית P2P. כדי לראות את הקישוריות עצמה, אפשר לעייןNET_CAPABILITY_VALIDATED
NET_CAPABILITY_NOT_METERED
: מציין שהרשת לא נמדדת לפי שימוש בנתונים. הרשת מסווג כחיוב לפי צריכת נתונים כשהמשתמש רגיש לצריכת נתונים כבדה חיבור עקב עלויות כספיות, מגבלות נתונים או ביצועי סוללה בעיות נפוצות.NET_CAPABILITY_NOT_VPN
: מציין שהרשת אינה רשת וירטואלית פרטית.NET_CAPABILITY_VALIDATED
: מציין שהרשת מספקת גישה בפועל לאינטרנט הציבורי כשמתבצעת בדיקה. רשת מאחורי שבויה או לרשת שלא מספקת רזולוציה של שם הדומיין היכולת הזאת. זו הכתובת הקרובה ביותר שהמערכת יכולה לדעת על רשת מתן גישה בפועל, למרות שרשת מאומתת עדיין יכולה בעיקרון, להיות כפופים לסינון מבוסס IP או סובלים מאובדן פתאומי בגלל בעיות כמו אות חלש.NET_CAPABILITY_CAPTIVE_PORTAL
: מציין שיש לרשת פורטל שבוי כשמתבצעת בדיקה.
יש יכולות נוספות שאפליקציות מיוחדות יותר עשויות להתעניין בהן.
למידע נוסף, אפשר לקרוא את הגדרות הפרמטרים ב-
NetworkCapabilities.hasCapability(int)
היכולות של הרשת יכולות להשתנות בכל שלב. כשהמערכת מזהה
פורטל שבוי, מציג הודעה שמזמינה את המשתמש להתחבר. אומנם זה
מתמשך, הרשת כוללת את NET_CAPABILITY_INTERNET
וגם
יכולות של NET_CAPABILITY_CAPTIVE_PORTAL
אבל לא
יכולת NET_CAPABILITY_VALIDATED
.
כשהמשתמש מבצע פעולה ומתחבר אל
לדף הפורטל שבוי, למכשיר תהיה אפשרות לגשת לאינטרנט הציבורי
והרשת מקבלת את היכולת NET_CAPABILITY_VALIDATED
ומאבדת את
יכולת NET_CAPABILITY_CAPTIVE_PORTAL
.
בדומה לכך, העברות הרשת יכולות להשתנות באופן דינמי.
לדוגמה, רשת VPN יכולה להגדיר את עצמה מחדש לשימוש
רשת מהירה יותר שנוצרה עכשיו, כמו מעבר מרשת סלולרית ל-Wi-Fi
של הרשת הבסיסית שלו. במקרה הזה, הרשת תאבד את TRANSPORT_CELLULAR
וגם מקבלת את ההובלה TRANSPORT_WIFI
, תוך שמירה על
TRANSPORT_VPN
הובלה.
האזנה לאירועי רשת
כדי לקבל מידע על אירועי רשת, אפשר להשתמש
NetworkCallback
בכיתה יחד עם
ConnectivityManager.registerDefaultNetworkCallback(NetworkCallback)
וגם
ConnectivityManager.registerNetworkCallback(NetworkCallback)
. שתי שיטות אלה משרתים
למטרות.
לכל האפליקציות ל-Android יש רשת ברירת מחדל, שנקבעת על ידי המערכת. בדרך כלל המערכת מעדיפה שימוש ברשתות לא נמדדות בחיוב לפי צריכת נתונים וברשתות מהירות יותר לרשתות איטיות יותר.
כשאפליקציה שולחת בקשת רשת, למשל באמצעות
HttpsURLConnection
,
המערכת מספקת את הבקשה הזו באמצעות רשת ברירת המחדל. אפליקציות יכולות לשלוח תנועה
גם ברשתות אחרות. למידע נוסף, עיינו בקטע שעוסק בהוספת
.
הרשת שמוגדרת כרשת ברירת המחדל יכולה להשתנות בכל שלב במהלך כל משך החיים של אפליקציה. דוגמה אופיינית היא מכשיר שמגיע בטווח של נקודת גישה ידועה, פעילה, מהירה ומהירה יותר מהחיבור ל-Wi-Fi בנייד. המכשיר מתחבר לנקודת הגישה הזו ומחליף את רשת ברירת המחדל עבור כל אפליקציות לרשת ה-Wi-Fi החדשה.
כשרשת חדשה הופכת לברירת המחדל, נעשה שימוש בכל חיבור חדש שהאפליקציה פותחת הרשת הזו. בשלב כלשהו מאוחר יותר, כל החיבורים שנותרו רשת ברירת המחדל נסגרת באופן מאולץ. אם חשוב לאפליקציה לדעת שרשת ברירת המחדל משתנה, היא רושמת רשת ברירת מחדל קריאה חוזרת באופן הבא:
Kotlin
connectivityManager.registerDefaultNetworkCallback(object : ConnectivityManager.NetworkCallback() { override fun onAvailable(network : Network) { Log.e(TAG, "The default network is now: " + network) } override fun onLost(network : Network) { Log.e(TAG, "The application no longer has a default network. The last default network was " + network) } override fun onCapabilitiesChanged(network : Network, networkCapabilities : NetworkCapabilities) { Log.e(TAG, "The default network changed capabilities: " + networkCapabilities) } override fun onLinkPropertiesChanged(network : Network, linkProperties : LinkProperties) { Log.e(TAG, "The default network changed link properties: " + linkProperties) } })
Java
connectivityManager.registerDefaultNetworkCallback(new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(Network network) { Log.e(TAG, "The default network is now: " + network); } @Override public void onLost(Network network) { Log.e(TAG, "The application no longer has a default network. The last default network was " + network); } @Override public void onCapabilitiesChanged(Network network, NetworkCapabilities networkCapabilities) { Log.e(TAG, "The default network changed capabilities: " + networkCapabilities); } @Override public void onLinkPropertiesChanged(Network network, LinkProperties linkProperties) { Log.e(TAG, "The default network changed link properties: " + linkProperties); } });
כשרשת חדשה הופכת לברירת המחדל, האפליקציה מקבלת קריאה ל
onAvailable(Network)
לרשת החדשה. יישום
onCapabilitiesChanged(Network,NetworkCapabilities)
onLinkPropertiesChanged(Network,LinkProperties)
,
או את שניהם כדי להגיב בצורה הולמת לשינויים בקישוריות.
להתקשרות חזרה שרשומה ב-registerDefaultNetworkCallback()
, onLost()
המשמעות היא שהרשת איבדה את הסטטוס כרשת ברירת המחדל. יכול להיות שהוא מנותק.
למרות שאפשר ללמוד על ההעברות שבהן משתמשת רשת ברירת המחדל
שליחת שאילתות
NetworkCapabilities.hasTransport(int)
זהו שרת proxy גרוע של רוחב הפס או מידות הרשת. האפליקציה שלך
לא יכול להניח שה-Wi-Fi הוא תמיד בלתי נמדד ותמיד מספק רוחב פס טוב יותר
מאשר בנייד.
במקום זאת, השתמשו
NetworkCapabilities.getLinkDownstreamBandwidthKbps()
כדי למדוד רוחב פס,
NetworkCapabilites.hasCapability(int)
עם
NET_CAPABILITY_NOT_METERED
של הארגומנטים כדי לקבוע את המדידה. למידע נוסף, עיינו בקטע שעוסק
NetworkCapabilities ו-LinkProperties.
כברירת מחדל, שיטות הקריאה החוזרת (callback) מופעלות בשרשור הקישוריות של
האפליקציה שלך, שהוא שרשור נפרד שבו ConnectivityManager
משתמש. אם
של הקריאות החוזרות (callback) צריך לפעול יותר זמן, צריך להפעיל אותן
מזינים שרשור עובדים נפרד באמצעות הווריאנט
ConnectivityManager.registerDefaultNetworkCallback(NetworkCallback, Handler)
אפשר לבטל את הרישום של הקריאה החוזרת כאשר אין לך יותר שימוש בה על ידי התקשרות
ConnectivityManager.unregisterNetworkCallback(NetworkCallback)
onPause()
של הפעילות העיקרית שלך
הוא מקום טוב לעשות זאת, במיוחד אם רושמים את הקריאה החוזרת (callback)
onResume()
רשתות נוספות
למרות שרשת ברירת המחדל היא הרשת הרלוונטית היחידה לרוב האפליקציות, יש
עשוי להתעניין ברשתות זמינות אחרות. כדי לקבל מידע על הנושאים האלה,
ליצור NetworkRequest
שתואם
לצרכים שלכם,
ConnectivityManager.registerNetworkCallback(NetworkRequest, NetworkCallback)
התהליך דומה להאזנה
לרשת ברירת מחדל. עם זאת, למרות שיכול להיות רק אפשרות אחת
רשת ברירת המחדל שחלה על אפליקציה בכל זמן נתון, הגרסה הזו מאפשרת
רואה את כל הרשתות הזמינות בו-זמנית, כך שקריאה
onLost(Network)
המשמעות היא שהרשת התנתקה לתמיד, וזה לא ברירת המחדל
יותר.
האפליקציה יוצרת NetworkRequest
כדי ליידע את ConnectivityManager
מאיזה סוג
הרשתות שהוא רוצה להאזין להן. הדוגמה הבאה מראה איך ליצור
NetworkRequest
לאפליקציה שמתעניינת רק בחיבור לאינטרנט ללא שימוש בנתונים
חיבורים:
Kotlin
val request = NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED) .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .build() connectivityManager.registerNetworkCallback(request, myNetworkCallback)
Java
NetworkRequest request = new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED) .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .build(); connectivityManager.registerNetworkCallback(request, myNetworkCallback);
פירוש הדבר הוא שיושמעו לאפליקציה שלך התראות על כל השינויים בנוגע לחומרים ללא חיוב ברשת במערכת.
לגבי הקריאה החוזרת (callback) של הרשת המוגדרת כברירת מחדל, קיימת גרסה של
registerNetworkCallback(NetworkRequest, NetworkCallback, Handler)
שמקבלת את הערך Handler
כדי לא לטעון את ה-thread Connectivity
של
אפליקציה.
שיחת טלפון
ConnectivityManager.unregisterNetworkCallback(NetworkCallback)
כשהקריאה החוזרת לא רלוונטית יותר. אפליקציה יכולה להירשם בו-זמנית
מספר קריאות חוזרות (callback) ברשת.
לנוחיותכם,
האובייקט NetworkRequest
מכיל את הפונקציה
יכולות נפוצות שרוב האפליקציות צריכות, כולל:
בזמן כתיבת האפליקציה, צריך לבדוק את ברירות המחדל כדי לראות אם הן תואמות תרחיש לדוגמה, ומוחקים את האפשרויות האלה אם רוצים שהאפליקציה תקבל התראות לגבי רשתות שאין להם את היכולות האלה. לעומת זאת, הוסיפו כדי למנוע קבלת קריאה לשינויי קישוריות ברשתות שהאפליקציה לא מקיימת אינטראקציה איתה.
לדוגמה, אם האפליקציה צריכה לשלוח הודעות MMS, יש להוסיף
NET_CAPABILITY_MMS
ל-NetworkRequest
כדי שלא יקבלו הודעות על כל הרשתות שלא יכולות
לשלוח הודעות MMS. הוסף
TRANSPORT_WIFI_AWARE
אם האפליקציה מתעניינת רק בקישוריות Wi-Fi מסוג P2P.
NET_CAPABILITY_INTERNET
והקבוצה
NET_CAPABILITY_VALIDATED
הם שימושיים אם אתם רוצים להעביר נתונים באמצעות שרת.
באינטרנט.
רצף קריאה חוזרת לדוגמה
בקטע הזה מתואר רצף הקריאות החוזרות שאפליקציה עשויה לקבל אם מתעד גם קריאה חוזרת כברירת מחדל וגם קריאה חוזרת (callback) רגילה במכשיר שיש קישוריות ברשת סלולרית. בדוגמה הזו, המכשיר מתחבר אל נקודת גישה טובה ל-Wi-Fi ואז מתנתקת ממנה. הדוגמה גם מניחה ההגדרה חבילת הגלישה פועלת תמיד מופעלת במכשיר.
לוח הזמנים הוא:
כשהאפליקציה מתקשרת למספר
registerNetworkCallback()
, השיחה החוזרת מיד מקבל שיחות מ-onAvailable()
, מ-onNetworkCapabilitiesChanged()
ומ-onLinkPropertiesChanged()
לרשת הסלולרית, כי רק זה הרשת זמינה. אם יש רשת אחרת זמינה, האפליקציה מקבל שיחות חוזרות גם מהרשת השנייה.
איור 1. מצב האפליקציה אחרי השיחה אלregisterNetworkCallback()
.לאחר מכן, האפליקציה מפעילה קריאה אל
registerDefaultNetworkCallback()
. רשת ברירת המחדל המערכת תתחיל לקבל שיחות אלonAvailable()
,onNetworkCapabilitiesChanged()
ו-onLinkPropertiesChanged()
עבור הרשת הסלולרית, מכיוון שהרשת הסלולרית היא רשת ברירת המחדל. אם המיקום רשת אחרת שאינה מוגדרת כברירת מחדל, האפליקציה לא יכולה לקבל לרשת שאינה מוגדרת כברירת מחדל.
איור 2. מצב האפליקציה אחרי רישום של רשת ברירת מחדל.לאחר מכן, המכשיר מתחבר לרשת Wi-Fi (לא נמדדת). הטקסט הרגיל קריאה חוזרת ברשת מקבלת שיחות אל
onAvailable()
,onNetworkCapabilitiesChanged()
ו-onLinkPropertiesChanged()
עבור רשת Wi-Fi.
איור 3. מצב האפליקציה לאחר התחברות לרשת Wi-Fi שאינה נמדדת.בשלב הזה, ייתכן שאימות רשת ה-Wi-Fi יימשך זמן מה. לחשבון במקרה הזה,
onNetworkCapabilitiesChanged()
קוראת לרשת הרגילה הקריאה החוזרת לא כוללת את היכולתNET_CAPABILITY_VALIDATED
. אחרי זמן קצר הוא יקבל שיחה למספרonNetworkCapabilitiesChanged()
, היכולות החדשות כוללות אתNET_CAPABILITY_VALIDATED
. ברוב המקרים, האימות מהיר מאוד.כשרשת ה-Wi-Fi מאומתת, המערכת מעדיפה להשתמש ברשת הסלולרית בעיקר מכיוון שהיא לא נמדדת. רשת ה-Wi-Fi הופכת הרשת שמוגדרת כברירת מחדל, כך שהקריאה החוזרת (callback) של הרשת שמוגדרת כברירת המחדל מקבלת קריאה
onAvailable()
,onNetworkCapabilitiesChanged()
וגםonLinkPropertiesChanged()
לרשת ה-Wi-Fi. הרשת הסלולרית עוברת לרקע, והקריאה החוזרת (callback) של הרשת הרגילה תקבל קריאהonLosing()
לרשת הסלולרית.בגלל שהדוגמה הזו מבוססת על ההנחה שחבילת הגלישה פועלת תמיד במכשיר הזה, הרשת הסלולרית אף פעם לא מתנתקת. אם ההגדרה מושבתת, אחרי כשהרשת הסלולרית מתנתקת, והקריאה החוזרת (callback) של הרשת הרגילה מקבל שיחה אל
onLost()
.
איור 4. מצב האפליקציה לאחר אימות רשת ה-Wi-Fi.בהמשך, המכשיר מתנתק פתאום מרשת ה-Wi-Fi כי הוא התנתק של הטווח. מכיוון שה-Wi-Fi מתנתק, הקריאה החוזרת (callback) של הרשת הרגילה מקבל התקשרות אל
onLost()
לרשת Wi-Fi. מאחר שהנייד הוא רשת ברירת המחדל החדשה, הקריאה החוזרת (callback) של הרשת שמוגדרת כברירת מחדל מקבלת שיחות אלonAvailable()
,onNetworkCapabilitiesChanged()
ו-onLinkPropertiesChanged()
עבור הרשת הסלולרית.
איור 5. מצב האפליקציה לאחר התנתקות מרשת ה-Wi-Fi.
אם ההגדרה חבילת הגלישה פועלת כל הזמן מושבתת, כשה-Wi-Fi
מנתקת את המכשיר מנסה להתחבר מחדש לרשת סלולרית. התמונה היא
דומה, אבל עם עיכוב קצר נוסף בשיחות onAvailable()
,
הקריאה החוזרת (callback) של הרשת הרגילה גם מקבלת קריאות אל onAvailable()
,
onNetworkCapabilitiesChanged()
ו-onLinkPropertiesChanged()
כי
הופך לזמין.
הגבלות על השימוש ברשת לצורך העברת נתונים
היכולת לראות רשת עם קריאה חוזרת (callback) ברשת לא אומרת שהאפליקציה יכולה
משתמשים ברשת להעברת נתונים. חלק מהרשתות לא מספקות אינטרנט
ורשתות מסוימות, עשויות להיות מוגבלות ל
אפליקציות מוגבלות. כדי לבדוק את החיבור לאינטרנט:
NET_CAPABILITY_INTERNET
וגם
NET_CAPABILITY_VALIDATED
השימוש ברשתות ברקע כפוף גם הוא לבדיקות הרשאות. אם האפליקציה
רוצה להשתמש ברשת רקע, הוא צריך
CHANGE_NETWORK_STATE
הרשאה.
אפליקציות עם ההרשאה הזו מאפשרות למערכת לנסות
להציג רשת שלא מוצגת, כמו הרשת הסלולרית
כשהמכשיר מחובר לרשת Wi-Fi. אפליקציה כזו קוראת
ConnectivityManager.requestNetwork(NetworkRequest, NetworkCallback)
עם NetworkCallback
כדי לקבל קריאה כשהרשת נפתחת.