באמצעות Connectivity Diagnostics API, אפליקציות שבבעלותן רשתות או שמנהלות אותן, כמו אפליקציות של ספקי סלולר, אפליקציות VPN ואפליקציות עם הצעות לרשתות Wi-Fi, יכולות לקבל מהמסגרת מידע אבחוני על קישוריות הרשת. האפליקציות האלה יכולות לרשום קריאות חוזרות ולקבל התראות עם מידע על קישוריות לרשתות שבבעלותן או בניהולן. אפליקציות לא יקבלו התראות לגבי רשתות שלא בבעלות או בניהול שלהן.
דוגמאות לאפליקציות שמנהלות רשתות או שהן בבעלות שלהן:
- אפליקציות של ספקי סלולר: ניהול רשתות סלולריות של
subId
יש להן הרשאות של ספק סלולר - אפליקציות עם הצעות לרשתות Wi-Fi: רשתות Wi-Fi משלכם שהן מציעות למערכת
- אפליקציות VPN: ניהול כל הרשתות שבהן ה-VPN שלהן משתמש, אבל רק כשהן ה-VPN הפעיל
קריאות חוזרות (callbacks) מופעלות במקרים הבאים:
אימות רשת: המערכת סיימה להעריך רשת ספציפית. בכיתה
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
ולבטל את הרישום שלהן. שיטות קריאה חוזרת שלא הוגדרו מחדש הן no-ops.
דוגמה להטמעה של 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 נבדק על ידי ConnectivityDiagnosticsManagerTest
במסגרת CTS.