要监听 Android 设备的网络状态变化,可以使用 ConnectivityManager 和 BroadcastReceiver。\n\n首先,在 AndroidManifest.xml 文件中添加以下权限:\n\nxml\n<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />\n\n\n然后,在 Activity 或 Fragment 中创建 BroadcastReceiver 和相关方法。\n\n在 Activity 中的示例代码如下:\n\njava\npublic class MainActivity extends AppCompatActivity {\n\n private NetworkChangeReceiver networkChangeReceiver;\n\n @Override\n protected void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n setContentView(R.layout.activity_main);\n\n networkChangeReceiver = new NetworkChangeReceiver();\n\n IntentFilter intentFilter = new IntentFilter();\n intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);\n registerReceiver(networkChangeReceiver, intentFilter);\n }\n\n @Override\n protected void onDestroy() {\n super.onDestroy();\n unregisterReceiver(networkChangeReceiver);\n }\n\n private void showNetworkStatus(boolean isConnected) {\n // 根据网络状态更新布局或执行其他操作\n if (isConnected) {\n // 网络已连接\n } else {\n // 网络未连接\n }\n }\n\n private class NetworkChangeReceiver extends BroadcastReceiver {\n\n @Override\n public void onReceive(Context context, Intent intent) {\n ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);\n NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();\n\n if (networkInfo != null && networkInfo.isConnected()) {\n showNetworkStatus(true);\n } else {\n showNetworkStatus(false);\n }\n }\n }\n}\n\n\n在 Fragment 中的示例代码如下:\n\njava\npublic class MyFragment extends Fragment {\n\n private NetworkChangeReceiver networkChangeReceiver;\n\n @Override\n public void onCreate(@Nullable Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n\n networkChangeReceiver = new NetworkChangeReceiver();\n\n IntentFilter intentFilter = new IntentFilter();\n intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);\n getActivity().registerReceiver(networkChangeReceiver, intentFilter);\n }\n\n @Override\n public void onDestroy() {\n super.onDestroy();\n getActivity().unregisterReceiver(networkChangeReceiver);\n }\n\n private void showNetworkStatus(boolean isConnected) {\n // 根据网络状态更新布局或执行其他操作\n if (isConnected) {\n // 网络已连接\n } else {\n // 网络未连接\n }\n }\n\n private class NetworkChangeReceiver extends BroadcastReceiver {\n\n @Override\n public void onReceive(Context context, Intent intent) {\n ConnectivityManager connectivityManager = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);\n NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();\n\n if (networkInfo != null && networkInfo.isConnected()) {\n showNetworkStatus(true);\n } else {\n showNetworkStatus(false);\n }\n }\n }\n}\n\n\n在 showNetworkStatus 方法中,可以根据网络状态更新布局或执行其他操作。\n\n请注意,这只是一个基本示例,您可以根据您的需求进行更改和扩展。

Android 网络状态监听:Activity 和 Fragment 实战指南

原文地址: https://www.cveoy.top/t/topic/qexO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录