当我尝试从URL创建一个位图并将其显示在ImageView上时,我正处于我的智慧之中,但我尝试的所有内容都失败了。
这是我的代码:
mPictureView = (ImageView)findViewById(R.id.image_view_picture);
String pictureToShowPath = getIntent().getStringExtra(EXTRA_PICTURE);
//The URL is http://upload.wikimedia.org/wikipedia/commons/4/4e/Buddha_statue.jpg
URL url = new URL(pictureToShowPath);
//I also tried with BitmapFactory.decodeStream((InputStream)url.getContent())
Bitmap bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream());
mPictureView.setImageBitmap(bitmap);
此代码位于try块内。在url.openConnection().getInputStream()
处抛出空异常,因此永远不会创建位图。异常是null所以我甚至不知道它是哪种异常。
我已经在我的手机上使用KitKat和我的平板电脑和Nougat测试了这个代码,它不适用于所有这些代码。我的设备已连接到WiFi,应用会请求这些权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
我已经尝试过其他方法来首先下载图像,例如使用带有URL的HttpURLConnection
或BufferedInputStream
,问题似乎总是相同的:每次尝试连接时都为null抛出异常。