Connectivity Diagnostics API מאפשר לאפליקציות שבבעלותן או בניהולן רשתות, כמו אפליקציות ספק, אפליקציות VPN ואפליקציות להצעות Wi-Fi, לקבל אבחון לגבי הקישוריות לרשת מה-framework. האפליקציות האלה יכולות לרשום קריאות חוזרות ולקבל התראות עם נתוני קישוריות של הרשתות שבבעלותן או בניהולן. אפליקציות לא יקבלו התראות לגבי ערוצים שלא בבעלות או בניהול של האפליקציה.
דוגמאות לאפליקציות שמנהלות רשתות או שהן בבעלות שלהן:
- אפליקציות של ספקים: ניהול רשתות סלולריות שעבורן
subId
יש הרשאות ספק - אפליקציות עם הצעות לרשתות Wi-Fi: רשתות Wi-Fi משלכם שהן מציעות למערכת
- אפליקציות VPN: ניהול כל הרשתות שבהן ה-VPN שלהן משתמש, אבל רק כשהן ה-VPN הפעיל
קריאות חוזרות מופעל במקרים הבאים:
אימות רשת: המערכת סיימה לבדוק רשת ספציפית. בכיתה
ConnectivityReport
מוצג מידע על המצב הנוכחי של הרשת ועל התוצאות של כל בדיקה או תהליך שבוצעו במסגרת האימות.public class ConnectivityReport { Network network; long reportTimestamp; LinkProperties linkProperties; NetworkCapabilities networkCapabilities; PersistableBundle additionalInfo; }
חשד לסטגנציה של נתונים: חשד לסטגנציה של נתונים, מצב שבו חבילות IP לא עוברות בצורה תקינה דרך הרשת. בכיתה
DataStallReport
מוצג מידע על חשד לסטולים של נתונים.public class DataStallReport { Network network; long reportTimestamp; int detectionMethod; LinkProperties linkProperties; NetworkCapabilities networkCapabilities; PersistableBundle stallDetails; }
הקישוריות דווחה: אפליקציה דיווחה למערכת על קישוריות באמצעות
ConnectivityManager#reportNetworkConnectivity
. הרשת והקישוריות המדווחת (לפי מה שהאפליקציה מזהה, הרשת מספקת קישוריות או לא) משותפים.
הטמעה
כדי להשתמש ב-Connectivity Diagnostics API, האפליקציה צריכה לקבל מהפלטפורמה מכונה של ConnectivityDiagnosticsManager
. צריך להשתמש במכונה הזו כדי לרשום הטמעות של ConnectivityDiagnosticsCallback
ולבטל את הרישום שלהן. שיטות לקריאה חוזרת (callback) שאי אפשר לשנות הן ללא תפעול.
למטה תוכלו לראות דוגמה להטמעה של ConnectivityDiagnosticsCallback
:
public class ExampleCallback extends ConnectivityDiagnosticsCallback {
@Override
public void onConnectivityReportAvailable(@NonNull ConnectivityReport report) {
...
// Log data, take action based on report result, etc
...
}
@Override
public void onDataStallSuspected(@NonNull DataStallReport report) {
...
// Log data, take action based on report result, etc
...
}
@Override
public void onNetworkConnectivityReported(
@NonNull Network network, boolean hasConnectivity) {
...
// Log data, take action based on report result, etc
...
}
}
כדי לרשום שיחות חוזרות ולקבל התראות, צריך להתקשר למספר registerConnectivityDiagnosticsCallback
.
כדי לבטל את הרישום של קריאות חזרה ולהפסיק לקבל התראות, צריך לבצע את הקריאה unregisterConnectivityDiagnosticsCallback
.
דוגמה לרישום ולביטול הרישום של ConnectivityDiagnosticsCallback
:
NetworkRequest request =
new NetworkRequest.Builder()
.addTransportType(TRANSPORT_CELLULAR)
.build();
// Use an Executor that is appropriate for your use case
Executor executor = Executors.newSingleThreadExecutor();
ConnectivityDiagnosticsManager cdm =
context.getSystemService(ConnectivityDiagnosticsManager.class);
ExampleCallback callback = new ExampleCallback();
cdm.registerConnectivityDiagnosticsCallback(
request, executor, callback);
...
// Collect connectivity information on networks that match with request
...
cdm.unregisterConnectivityDiagnosticsCallback(callback);
אימות
ה-Connectivity Diagnostics API נבדק על ידי CTS על ידי ConnectivityDiagnosticsManagerTest
.