2017-06-23 179 views
0

我正嘗試使用我的應用中的URL和按鈕下載圖像。當我在手機上運行它時,我無法下載圖像。任何人都可以請指出這個問題。感謝您的幫助提前:)使用URL下載圖像

這是我的代碼。

public class MainActivity extends AppCompatActivity { 

ImageView download; 

public void downloadImage(View view){ 

    DownloadImage image = new DownloadImage(); 
    Bitmap result; 
    try { 
     result = image.execute("https://en.wikipedia.org/wiki/File:Bart_Simpson_200px.png").get(); 
     download.setImageBitmap(result); 
    } 
    catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    download = (ImageView) findViewById(R.id.imageView); 
} 

public class DownloadImage extends AsyncTask<String, Void, Bitmap>{ 

    @Override 
    protected Bitmap doInBackground(String... urls) { 
     URL url; 
     HttpURLConnection urlConnection = null; 
     try { 
      url = new URL(urls[0]); 
      urlConnection = (HttpURLConnection) url.openConnection(); 
      urlConnection.setDoInput(true); 
      urlConnection.connect(); 
      InputStream in = urlConnection.getInputStream(); 
      Bitmap Image = BitmapFactory.decodeStream(in); 
      in.close(); 
      return Image; 
     } 
     catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 
} 
} 
+0

我會強烈建議你使用Glide而不是AsyncTask。我用它來加載我的所有圖像,本地或遠程。 –

回答

2

你可以從網址兩種方式

。你可以用戶Glide library從URL加載圖像看下面的代碼,它可以幫助你以簡單的方式

編譯下載圖像這個庫

implementation 'com.github.bumptech.glide:glide:4.6.1' 

不是這樣的

Glide.with(HomeClass.this) 
      .load(url)    
      .into(imageview); 

2。嘗試加載圖片的,如果你不想使用第三方庫

new DownloadImage(imamgeview).execute(url); 

創建一個異步任務

public class DownloadImage extends AsyncTask<String, Void, Bitmap> { 
ImageView bmImage; 

public DownloadImage(ImageView bmImage) { 
    this.bmImage = (ImageView) 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.d("Error", e.getStackTrace().toString()); 

    } 
    return mIcon11; 
} 

protected void onPostExecute(Bitmap result) { 
    bmImage.setImageBitmap(result); 
} 
} 

我希望它會在你的情況下工作