Rumah >Java >javaTutorial >Bagaimana untuk Mengesan Perubahan Status Rangkaian dan Acara Luar Talian pada Android?

Bagaimana untuk Mengesan Perubahan Status Rangkaian dan Acara Luar Talian pada Android?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-24 19:51:02799semak imbas

How to Detect Network Status Changes and Offline Events on Android?

Memantau Perubahan Status Rangkaian pada Android

Soalan: Bagaimanakah saya boleh mengesan perubahan dalam status rangkaian pada Android peranti, khususnya apabila rangkaian di luar talian?

Untuk menangkap perubahan status rangkaian, Android menyediakan kelas BroadcastReceiver. Kelas ConnectivityManager membolehkan anda mendapatkan maklumat tentang sambungan rangkaian aktif.

Penyelesaian:

1. Buat kelas Java memperluaskan Penerima Siaran

<code class="java">public class ConnectionChangeReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
        NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

        if (activeNetInfo != null) {
            Toast.makeText(context, "Active Network Type: " + activeNetInfo.getTypeName(), Toast.LENGTH_SHORT).show();
        }

        if (mobNetInfo != null) {
            Toast.makeText(context, "Mobile Network Type: " + mobNetInfo.getTypeName(), Toast.LENGTH_SHORT).show();
        }
    }
}</code>

2. Tambahkan kebenaran yang diperlukan pada AndroidManifest.xml

<code class="xml"><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /></code>

3. Daftarkan Penerima Siaran dalam AndroidManifest.xml

<code class="xml"><receiver android:name="com.blackboard.androidtest.receiver.ConnectionChangeReceiver"
          android:label="NetworkConnection">
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
</receiver></code>

4. Daftarkan Penerima Siaran secara dinamik (pilihan)

Jika anda perlu mendaftar Penerima Siaran secara dinamik dalam kod anda, anda boleh menggunakan pendekatan berikut:

<code class="java">BroadcastReceiver receiver = new ConnectionChangeReceiver();
IntentFilter filter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
context.registerReceiver(receiver, filter);</code>

Kod ini akan membolehkan anda untuk tangkap perubahan status rangkaian dan tentukan bila rangkaian di luar talian. Anda boleh mengendalikan acara tersebut dengan sewajarnya dalam logik aplikasi anda.

Atas ialah kandungan terperinci Bagaimana untuk Mengesan Perubahan Status Rangkaian dan Acara Luar Talian pada Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn