我有问题。当应用程序从Web加载图像时,它应该显示,但在Android 4.0上它不会显示。它适用于Android 2.2。
这是代码。
public class Main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ImageView imgView =(ImageView)findViewById(R.id.imview);
Drawable drawable = LoadImageFromWeb("http://alphaapplication.com/liveshit/free/tour_dates/images/ad.png");
imgView.setImageDrawable(drawable);
}
public void ad (View view) {
ad("https://market.android.com/search?q=pub%3A%22Alpha%20Application%22");
}
private void ad (String url) {
Uri uriUrl = Uri.parse(url);
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
startActivity(launchBrowser);
}
private Drawable LoadImageFromWeb(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;
}
}
}
答案 0 :(得分:2)
从Honeycomb,3.X.X开始,您无法再从主UI线程访问网络。这就是您刚刚提供的代码段中的内容。现在,您需要将所有网络访问移动到后台线程。完成此任务的最简单方法是使用AsyncTask。我已将您与开发人员指南相关联,以便您可以轻松转换代码。
http://developer.android.com/resources/articles/painless-threading.html
只是为了验证,你应该查看logcat,你的应用程序可能会悄悄地抛出一个NetworkOnMainThreadException,但它不足以导致你的应用程序爆炸,因为它是信息性的;不是系统停止。
让我知道这是否适合您,或者查找logcat中抛出的异常并在此处回复
DSC
答案 1 :(得分:1)
pr0methium是对的。 http://developer.aiwgame.com/imageview-show-image-from-url-on-android-4-0.html
....... //显示图像 新的DownloadImageTask((ImageView)findViewById(R.id.imageView1)) .execute( “http://java.sogeti.nl/JavaBlog/wp-content/uploads/2009/04/android_icon_256.png”); }
public void onClick(View v) {
startActivity(new Intent(this, IndexActivity.class));
finish();
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}