gpt4 book ai didi

java - android KITKAT 和旧版本的问题

转载 作者:行者123 更新时间:2023-12-02 02:19:08 28 4
gpt4 key购买 nike

我正在 imageView 中查看来自 url 的图像,该代码适用于 android lollipop 和较新版本,但不适用于 android Kitkat 和旧版本,它返回空白图像而不是 url图片..这是我的代码:HomeActivity.java

private static final String ALLOWED_URI_CHARS = "@#&=*+-_.,:!?()/~'%";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);


final ImageView imageView = (ImageView) findViewById(R.id.imageView);
final String url =
"https://arabian-chemistry.com/wp-content/uploads/2018/01/ما-الذي-يؤخر-العلاج-بتقنية-CRISPR؟.jpg";


URI I = null;
try {
URL u = new URL(url);
I = new URI(u.getProtocol(), u.getUserInfo(), u.getHost(), u.getPort(), u.getPath(), u.getQuery(), u.getRef());

} catch (MalformedURLException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}
final String urlEncoded = Uri.encode(url, ALLOWED_URI_CHARS);
final String ui = I.toASCIIString();


imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Picasso.with(HomeActivity.this).load(ui).resize(48, 48).placeholder(R.color.colorPrimaryDark).into(imageView);
Toast.makeText(HomeActivity.this, "url is: " + ui, Toast.LENGTH_SHORT).show();


}
});
}}

activity_home.xml

   <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorAccent"
tools:context="com.alpha25.gridview.HomeActivity">



<ImageView
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:id="@+id/imageView"
/>



</RelativeLayout>

我在 AndroidManifest 文件中包含了互联网权限

有什么建议吗?

最佳答案

检查您的代码后。我已经为你的问题做了一个演示。因此,我附上屏幕截图和所有详细信息,包括解决方案,以便更好地分析您的问题并解决它。

首先。 **在Picasso中**,它表示服务器出现错误。在日志中,您可以看到这一点。

enter image description here

我通过更好的日志记录更深入地挖掘了您的问题...

这是我从 glide 库获得的信息...

W/Glide: Load failed for https://arabian-chemistry.com/wp-content/uploads/2016/07/ptable.png with size [200x200]  class com.bumptech.glide.load.engine.GlideException: Failed to load resource
Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Fetching data failed, class java.io.InputStream, REMOTE
Cause (1 of 1): class com.bumptech.glide.load.engine.GlideException: Fetch failed
Cause (1 of 1): class javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x608e5f90: Failure in SSL library, usually a protocol error
error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x5dafe6ed:0x00000000)

从这一行开始。

error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x5dafe6ed:0x00000000)

您可以看到这是**SSL 握手失败**。此问题仅在 API <=19 时出现。所以您在 Kitkat 设备中遇到了这个问题。

可以通过从启用的协议(protocol)列表中删除SSLv3 协议(protocol)来解决此问题。您必须创建一个名为 NoSSLv3SocketFactory

的自定义 socketFactory 类

对于如何实现这一点,您可以 get a reference from this post

所以。之后,您的问题将得到解决。不过,如果您遇到任何困难,您可以随意发表评论。

关于java - android KITKAT 和旧版本的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48786834/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com