提问人:OEThe11 提问时间:2/11/2023 更新时间:2/11/2023 访问量:374
如何让应用仅在 Android Studio 中检查移动数据
How to have the app check for mobile data ONLY in Android Studio
问:
因此,在此应用程序中,需要使用某种网络,因为涉及 API 调用。当周围没有移动数据时,会弹出一个错误。问题是,当我关闭 WiFi 时,它也会弹出,而移动数据仍处于打开状态。有没有办法只针对移动数据状态弹出错误消息,而不同时针对 WiFi 和移动数据弹出错误消息。这是我认为正在验证网络状态的代码。
public static boolean verifyNetWork(@NonNull Context context) {
ConnectivityManager cm = (ConnectivityManager)context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (cm == null) {
return false;
}
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
}
任何帮助和建议都是值得赞赏的。谢谢
答:
2赞
Chintan Bhanderi
2/11/2023
#1
请注意,您需要向应用文件添加权限才能使用该类:ACCESS_NETWORK_STATE
AndroidManifest.xml
ConnectivityManager
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
要检查 Android 应用中移动数据的可用性,您可以使用 Android 框架提供的类。ConnectivityManager
public boolean isMobileDataAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected() && activeNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE;
}
然后,可以在代码中调用此方法并检查其返回值,以确定移动数据是否可用:
if (isMobileDataAvailable()) {
// Mobile data is available
} else {
// Mobile data is not available
}
是的,我提供的更新代码同时检查移动数据和 Wi-Fi。
public boolean isMobileDataAvailable() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected() &&
(activeNetworkInfo.getType() == ConnectivityManager.TYPE_MOBILE ||
activeNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI);
}
评论
0赞
OEThe11
2/11/2023
好的,所以基本上用上面的 if 语句替换方法中的任何内容?verifyNetWork
0赞
Chintan Bhanderi
2/11/2023
是的,您可以替换
0赞
OEThe11
2/11/2023
两者呢?
1赞
Chintan Bhanderi
2/11/2023
我为两者提供了另一种方法
评论