xamarin 如何检查Hive数据是否已启用

enxuqcxy  于 2023-11-15  发布在  Hive
关注(0)|答案(2)|浏览(171)

我想检查我的Android应用程序是否启用了Hive数据。我找到了此代码,但它已弃用代码。我找不到一种方法来做到这一点,而不使用弃用代码。

private bool IsCellularDataEnabled(Context context)
{
    var cm = (ConnectivityManager)context.GetSystemService(Context.ConnectivityService);

    if (cm == null) return false;

    if (Build.VERSION.SdkInt < BuildVersionCodes.M)
    {
        var ni = cm.ActiveNetworkInfo;

        if (ni == null) return false;
        
        return ni.IsConnected && ni.Type == ConnectivityType.Mobile;
    }

    return cm.GetNetworkCapabilities(cm.ActiveNetwork).HasTransport(Android.Net.TransportType.Cellular);
}

字符串

b4qexyjb

b4qexyjb1#

在运行弃用代码之前,您正在执行SDK检查。这意味着您永远不会在任何设备上运行任何弃用代码。所以没有问题。
您的代码可以通过捕获NoSuchMethodError而不是SDK检查来改进。这更好,因为您没有检查错误SDK版本的风险。
我已经用Java编写了改进的代码(我希望你不介意)。但是正如已经说过的,你也可以坚持你的代码。

@SuppressWarnings("deprecation")
private boolean IsCellularDataEnabled(Context context) {
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    if (cm == null) return false;

    try {
        return cm.getNetworkCapabilities(cm.getActiveNetwork()).hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR);
    } catch (NoSuchMethodError e) {
        android.net.NetworkInfo ni = cm.getActiveNetworkInfo();
        if (ni == null) return false;
        return ni.isConnected() && ni.getType() == ConnectivityManager.TYPE_MOBILE;
    }
}

字符串

5cg8jx4n

5cg8jx4n2#

使用Xamarin.Essentials,您可以执行以下操作并检查所需的connection profile

using Xamarin.Essentials;

namespace YourNamespace
{
    public class YourClass
    {
        private bool IsCellularDataEnabled()
        {
            var profiles = Connectivity.ConnectionProfiles;
            return profiles.Contains(ConnectionProfile.Cellular);
        }
    }
}

字符串
这将检查设备上是否启用了移动的数据。
不要忘记启用ACCESS_NETWORK_STATE权限,例如,通过将这一行添加到 AndroidManifest.xml(如果您还没有这样做):

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

相关问题