设备与PC断开连接时无法连接

时间:2019-08-29 01:19:56

标签: android http okhttp

我有一个Android应用程序,可以使用okhttp库从服务器获取数据。它的版本为:https://github.com/ertrzyiks/android-http-data-widget

class LoadData() : AsyncTask<Void, Void, String>() {
    override fun doInBackground(vararg params: Void?): String? {
        val client = OkHttpClient.Builder()
            .connectTimeout(10, TimeUnit.SECONDS)
            .build()

        val url = URL("https://example.com/some/path")

        val request = Request.Builder()
            .url(url)
            .get()
            .build()

        try {
            val response = client.newCall(request).execute()
            val responseBody = response.body!!.string()

            return responseBody
        } catch (e: Exception) {
            return e.message
        }
    }
}

我还将互联网权限添加到了清单文件中

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

我使用USB电缆将移动设备连接到计算机,使用Android Studio在该设备上运行应用程序,并且一切正常。发出了请求,我可以看到响应。

尽管我断开USB电缆的连接却看到以下错误:

failed to connect to example.com/ip here (port 443) from /192.168.1.10 (port 41446) after 10000ms

当我使用HttpUrlConnection时,也会发生此问题。

我的移动设备是三星Galaxy S8,Android版本是9。

当我发出请求然后插入USB电缆时,它可以工作。因此,显然,只有当设备连接到ADB时,我的应用程序才能访问Internet。我该如何解决?

我使用的库:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.0.2'
    implementation 'androidx.core:core-ktx:1.0.2'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.squareup.okhttp3:okhttp:4.1.0'
    implementation 'com.fasterxml.jackson.core:jackson-core:2.0.1'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.9.8'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
}

1 个答案:

答案 0 :(得分:0)

我的三星设备处于省电模式,并且选中了限制背景数据选项。此选项可防止后台应用使用Wi-Fi和移动数据。禁用此选项后,即使没有连接调试器,我的小部件也可以访问Internet连接。

如何禁用此选项:

  1. 转到设置
  2. 设备保养
  3. 点击电池图标
  4. 电源模式
  5. 当前选择的电源模式(我有省电
  6. 取消选中限制后台数据
  7. 点击“应用”按钮