即使设备有连接,获取连接也会返回 false

Ale*_*mpa 4 networking android

我有一个应用程序,它有一个警报器,可以返回位置并将其发送到服务器,但首先它会检查互联网连接。这是检查连接的方法:

public boolean hasInternetConnection() {        
        ConnectivityManager connectivityManager = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        if (connectivityManager != null) {
            NetworkInfo networkInfo = connectivityManager
                    .getActiveNetworkInfo();            
            if (networkInfo != null && networkInfo.isAvailable()            
                    && networkInfo.isConnected()) {                     
                return true;
            } else {
                return false;                   
            }
        } else {
            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

清单上的权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="pe.com.hacom.taxitrack.mgr.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
Run Code Online (Sandbox Code Playgroud)

它一直工作正常,但是当我在摩托罗拉 XT316 上尝试它时它不起作用,它总是返回 false,即使设备已连接,我打开互联网浏览器检查它并正常显示网页,但是警报仍然使用该方法返回 false。

我在其他设备上进行了测试,它在所有设备上都运行良好,但是摩托罗拉,知道发生了什么吗?那是硬件错误吗?

最罕见的是,有时我可以在 DDMS 中获取设备以获取调试日志,但几乎总是显示“离线”。我已经安装了设备中的驱动程序,也卸载了它并从网页上安装了摩托罗拉的通用驱动程序,它可以与 Motoroal RAZR 一起使用,但不能与 XT316 一起使用。

Rei*_*erd 5

这可能是因为设备有某种电池管理系统,它会禁用互联网连接,并在您打开浏览器时启用它,但在触发此警报时它不起作用。