تسمح واجهة Connectivity Diagnostics API للتطبيقات التي تملك الشبكات أو تديرها، مثل تطبيقات مشغّلي شبكات الجوّال وتطبيقات شبكات VPN وتطبيقات اقتراحات Wi-Fi، بتلقّي معلومات تشخيص الاتصال بالشبكة من إطار العمل. يمكن لهذه التطبيقات التسجيل معاودة الاتصال وتلقي إشعارات مع معلومات الاتصال التي يملكونها أو يديرونها. لن تتلقّى التطبيقات إشعارات للشبكات. التي لا يملكها أو يديرها التطبيق.
في ما يلي أمثلة على التطبيقات التي تدير الشبكات أو تمتلكها:
- تطبيقات مشغّل شبكة الجوّال: يمكنك إدارة شبكات الجوّال التي يتم استخدام
subId
لها. لديه امتيازات مشغّل شبكة الجوّال لـ - تطبيقات اقتراحات Wi-Fi: تمتلك شبكات Wi-Fi التي تقترحها على النظامية
- تطبيقات شبكة 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
وإلغاء تسجيلها. طرق معاودة الاتصال التي لم يتم إلغاؤها هي عمليات محظورة.
فيما يلي مثال على
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);
التحقُّق
يتم اختبار CTS من خلال واجهة برمجة تطبيقات بيانات تشخيص مشاكل الاتصال
ConnectivityDiagnosticsManagerTest