Android 在emulator和物理设备上工作的ImageView上显示url位图的正确方法?

Android 在emulator和物理设备上工作的ImageView上显示url位图的正确方法?,android,bitmap,imageview,textures,drawable,Android,Bitmap,Imageview,Textures,Drawable,我正在为本地媒体构建一个Android应用程序,并解析相关图像,比如电影数据库API中的图像,在Android Studio emulator上一切正常,但当我构建apk并安装在真实设备上时,下载的图像都不会显示在他们的ImageView上 我使用的代码是 String Url = Actionlist1.getString(t);//pasrsed from a JSONArray object java.net.URL url = new java.net.URL(Url); HttpURL

我正在为本地媒体构建一个Android应用程序,并解析相关图像,比如电影数据库API中的图像,在Android Studio emulator上一切正常,但当我构建apk并安装在真实设备上时,下载的图像都不会显示在他们的ImageView上

我使用的代码是

String Url = Actionlist1.getString(t);//pasrsed from a JSONArray object
java.net.URL url = new java.net.URL(Url);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.connect();
InputStream input = connection.getInputStream();
Bitmap b = BitmapFactory.decodeStream(input);
Bitmap b1 = Bitmap.createScaledBitmap(b, 100, 140, false);//hard coded scaling to the ImageView width and height.
ImageView B1 = findViewById(R.id.Button1);
B1.setImageBitmap(b1);
当在模拟器上运行时,此代码工作正常,但当在设备上运行时,所有图像都是黑色的,我不知道代码应该工作,除了缺少图像之外,应用程序的行为正常。

试试这个

        Glide.with(this)
                    .asBitmap()
                    .load(//url)
                    .placeholder(R.drawable.vijay)
                    .into(imageView);
还要添加此依赖项

实现'com.github.bumptech.glide:glide:4.9.0'

只需在app.gradle文件中添加这一行即可

implementation 'com.squareup.picasso:picasso:2.71828'
之后,您可以轻松地从联机加载图像

Picasso.get().load("http://i.imgur.com/DvpvklR.png").into(imageView);

我将为任何一个面临同样问题的人提供答案。Android版本和更新版本之间使用的网络方法之间存在差异,新版本不会加载非安全连接的图像资产。如果您面临相同的问题,请按以下方式更改URL

//Old URL   
String URL= "http://image.tmdb.org/t/p/w500/l4iknLOenijaB85Zyb5SxH1gGz8.jpg";
//New URL   
String URL= "https://image.tmdb.org/t/p/w500/l4iknLOenijaB85Zyb5SxH1gGz8.jpg";

s确实起到了很大的作用。

干杯,此软件包的行为完全相同,在模拟器中可以正常加载,但在物理设备上运行时只有一个黑色图像。如果可以正常工作,请尝试从联机加载另一个图像,然后找出图像的问题干杯,部分正确,这是使用https的要求。不幸的是,在主线程上运行时,映像不会加载并恢复为回退映像,就像在异步方法的onPostExecute中一样。关于如何运行这个程序有什么想法吗?这一行的Url值是多少?
String Url=Actionlist1.getString(t)
?我已经添加了这个解决方案,新版本的android只能使用https而不能使用http。