如下代码种的url.openStream()一执行就报错,访问网络的权限也已经给了,鼓捣半天办实在是不知道为什么,求大伙儿帮忙看下
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) this.findViewById(R.id.btnGet); imageView = (ImageView)this.findViewById(R.id.imgView); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String urlString = "http://x.limgs.cn/f2/c1/up201301/342a0432638526a1c79471d86f3d7192.jpg"; try { URL url = new URL(urlString); InputStream inputStream = url.openStream(); Bitmap bitmap = BitmapFactory.decodeStream(inputStream); imageView.setImageBitmap(bitmap); inputStream.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }); }
异常是这个:
android.os.NetworkOnMainThreadException
你在UI主线程执行了网络访问操作,把你的网络访问放入独立线程吧UI线程中不能做耗时操作的,建议你,采用thread+handler来读取图片并显示到Imageview上,当然你也可以用AsyncTask来读取。
上面两位说的对的,可以外面写个方法,oncreate里面调方法就可以了,不过如果是4.0或以上版本的话,方法里面不可以直接连接网络的,网上有4.0或以上版本连接方法,复制过来就好了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。