E/AndroidRuntime: FATAL EXCEPTION: Thread-18 Process: com.example.read, PID: 22568 java.lang.RuntimeException: java.net.UnknownServiceException: CLEARTEXT communication to 192.168.210.113 not permitted by network security policy at com.example.read.upload_serverActivity$1.run(upload_serverActivity.java:111) at java.lang.Thread.run(Thread.java:920) Caused by: java.net.UnknownServiceException: CLEARTEXT communication to 192.168.210.113 not permitted by network security policy at okhttp3.internal.connection.RealRoutePlanner.planConnectToRoute$okhttp(RealRoutePlanner.kt:195) at okhttp3.internal.connection.RealRoutePlanner.planConnect(RealRoutePlanner.kt:152) at okhttp3.internal.connection.RealRoutePlanner.plan(RealRoutePlanner.kt:67) at okhttp3.internal.connection.FastFallbackExchangeFinder.launchTcpConnect(FastFallbackExchangeFinder.kt:118) at okhttp3.internal.connection.FastFallbackExchangeFinder.find(FastFallbackExchangeFinder.kt:62) at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:267) at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:84) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:65) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:205) at okhttp3.internal.connection.RealCall.execute(RealCall.kt:158) at com.example.read.upload_serverActivity$1.run(upload_serverActivity.java:106) at java.lang.Thread.run(Thread.java:920) 怎么解决
时间: 2023-09-22 19:05:42 浏览: 66
这个错误是因为您的应用程序正在使用 HTTP 协议进行与服务器的通信,而 Android Pie 及更高版本默认不允许您的应用程序使用未加密的 HTTP 协议进行通信。这是为了提高应用程序的安全性,以避免敏感数据被窃取或篡改。
要解决这个问题,您可以采取以下两种方法之一:
1. 在您的 AndroidManifest.xml 文件中添加以下代码,以允许您的应用程序使用 HTTP 协议进行通信:
```
<application
android:usesCleartextTraffic="true"
...>
...
</application>
```
2. 将您的应用程序迁移到使用 HTTPS 协议进行通信,这样就可以避免这个错误。 HTTPS 协议可以确保数据的加密和完整性,从而提高应用程序的安全性。
建议采用第二种方法,因为它更加安全可靠,可以保护用户数据的安全。
相关问题
E/AndroidRuntime: FATAL EXCEPTION: Thread-2 Process: com.example.petgrowing, PID: 19678
这个错误通常是由于在非 UI 线程上访问 UI 元素而引发的。在 Android 中,UI 元素只能在主线程上更新,因此如果在非 UI 线程上更新 UI 元素,就会抛出这个异常。
在这个问题的代码中,使用了一个新线程来进行网络请求,然后在该线程中更新了 UI 线程上的 TextView。这样会导致在非 UI 线程上更新 UI 元素,从而引发了该异常。
为了解决这个问题,可以使用 `runOnUiThread` 方法来在 UI 线程上更新 TextView 的内容。具体来说,可以将获取到的数据作为参数传递给 `runOnUiThread` 方法,并在该方法中更新 TextView 的内容,如下所示:
```
new Thread(() -> {
try {
// 进行网络请求,获取数据
Document doc = Jsoup.connect("https://chl.cn/?jinri").get();
Elements tables = doc.getElementsByTag("table");
Element table1 = tables.first();
Elements tds = table1.getElementsByTag("td");
Element td1 = tds.first();
Element td2 = tds.get(4);
final String retStr = ("1:" + td1.text() + " 2:" + td2.text());
// 在 UI 线程上更新 TextView 的内容
runOnUiThread(() -> {
show.setText(retStr);
});
} catch (IOException e) {
e.printStackTrace();
}
}).start();
```
这样就可以在 UI 线程上更新 TextView 的内容,从而避免了在非 UI 线程上访问 UI 元素的问题。
E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.meiquan, PID: 6591如何解决
要解决这个问题,需要先查看错误详细信息,找到错误的原因,然后采取相应的措施。一般情况下,解决方法可能包括以下几个方面:
1. 查看错误详细信息,找到错误的原因。根据错误信息中的类、方法、行号等信息,可以大致确定错误的位置和原因。
2. 修改代码,修复错误。根据错误的原因,修改代码中可能存在的错误。例如,如果是空指针异常,可以检查代码中是否有可能为空的对象未进行判断,加上必要的判断语句即可。
3. 使用调试工具进行调试。使用 Android Studio 等开发工具自带的调试功能,可以在代码执行过程中逐行调试,找到问题所在。
4. 删除并重建应用程序。如果错误无法通过以上方法解决,可以尝试删除应用程序并重新构建。有时候,这个问题可能是由于应用程序的构建过程中出现的错误导致的。
需要注意的是,解决这个问题可能需要一定的技术水平和经验。如果您不确定如何解决,建议向有经验的开发人员寻求帮助。