从网址加载图片。模拟器运行良好但设备无法正常工作

时间:2013-11-19 08:27:53

标签: android android-imageview android-image

我开发了一个移动应用来从URL路径加载图片。

这是我的代码。

    private Drawable LoadImageFromWebOperations(String url)
    {
        try
        {
            InputStream is = (InputStream) new URL(url).getContent();
            Drawable d = Drawable.createFromStream(is, "src name");
            return d;

        }catch (Exception e)
        {   
        System.out.println("Exc="+e);
        return null;
        }
    }

这种方法在Android API 10但在Android设备上无法正常工作的模拟器中运行良好。我使用测试的设备是API 16和17。

请寻求帮助。感谢。

3 个答案:

答案 0 :(得分:0)

你做到了吗?:

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

是的,你必须连接到互联网。

答案 1 :(得分:0)

LotusUNSW 是对的,您必须添加INTERNET权限,但如果它在模拟器上工作,则似乎已设置此权限。

编辑: 或者,您可以尝试使用此方法:

(最后一段代码是一个没有检查的愚蠢复制粘贴,可用here

不要忘记在单独的线程中执行此操作(例如,使用AsyncTask)

但试试这件事

private Bitmap getImageBitmap(String url) {
        Bitmap bm = null;
        try {
            URL aURL = new URL(url);
            URLConnection conn = aURL.openConnection();
            conn.connect();
            InputStream is = conn.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(is);
            bm = BitmapFactory.decodeStream(bis);
            bis.close();
            is.close();
       } catch (IOException e) {
           Log.e(TAG, "Error getting bitmap", e);
       }
       return bm;
    } 

然后

Bitmap b = getImageBitmap("http://sdsdsdsdsdsdsds");
if (b != null)
  myImageView.setImageDrawable(d);

来源:here

答案 2 :(得分:0)

尝试将此代码移动到线程或AsyncTask。由于严格模式,无法从主线程完成Http请求。请检查AsyncTask