这里是一个展示 Android 网络状态的简单 demo,代码如下:
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = findViewById(R.id.textview);
String status = getNetworkStatus(this);
mTextView.setText(status);
}
public static String getNetworkStatus(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
if (activeNetwork != null && activeNetwork.isConnectedOrConnecting()) {
switch (activeNetwork.getType()) {
case ConnectivityManager.TYPE_WIFI:
return "已连接 Wi-Fi";
case ConnectivityManager.TYPE_MOBILE:
return "已连接手机网络";
}
}
return "未连接网络";
}
}
简要代码解释:
MainActivity
继承自AppCompatActivity
。onCreate
方法在 Activity 创建时被调用,我们在这里获取并展示网络状态。getNetworkStatus
方法返回当前网络状态,主要通过ConnectivityManager
类实现,具体步骤是获取ConnectivityManager
实例,再通过实例的getActiveNetworkInfo
方法获取活动网络信息,最后根据网络类型返回对应字符串。注意,getActiveNetworkInfo
方法已经在 Android 10 中被废弃,需要使用NetworkCapabilities
类来获取网络状态。- 布局文件中只有一个 TextView 元素展示网络状态。
建议阅读:
- ConnectivityManager | Android Developers
- NetworkInfo | Android Developers
- NetworkCapabilities | Android Developers
这里提供一个简单的 Android 网络状态检测的 Demo,使用了 Android SDK 中自带的 ConnectivityManager 和 NetworkInfo。
public class NetworkStatusActivity extends AppCompatActivity {
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_network_status);
mTextView = findViewById(R.id.tv_network_status);
// 获取系统服务 ConnectivityManager
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
// 获取当前网络信息
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
// 网络连接正常
mTextView.setText("网络连接正常");
} else {
// 网络连接异常
mTextView.setText("网络连接异常,请检查网络设置");
}
}
}
在布局文件中添加一个 TextView 用于显示网络状态:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".NetworkStatusActivity">
<TextView
android:id="@+id/tv_network_status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:textSize="24sp" />
</RelativeLayout>
注意,需要在 AndroidManifest.xml 中添加权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/154928.html