如何让应用仅在 Android Studio 中检查移动数据

How to have the app check for mobile data ONLY in Android Studio

提问人:OEThe11 提问时间:2/11/2023 更新时间:2/11/2023 访问量:374

问:

因此,在此应用程序中,需要使用某种网络,因为涉及 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();
    } 

任何帮助和建议都是值得赞赏的。谢谢

java android 网络

评论


答:

2赞 Chintan Bhanderi 2/11/2023 #1

请注意,您需要向应用文件添加权限才能使用该类:ACCESS_NETWORK_STATEAndroidManifest.xmlConnectivityManager

<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
我为两者提供了另一种方法