2017-10-08 7 views
1

を取得Androidのは、非同期Iは、入力ストリームのURLからbipmapして解読しようとする画像

プレゼンターは、私が手MVPmain.presenterそれは、コードの一部です

{

String LOG_TAG = "Presenter: "; 

private final MVPmain.view view; 
String url = "https://jsonplaceholder.typicode.com/"; 

public Presenter(MVPmain.view view) { 
    this.view = view; 
} 


void photosUrl() { 
     String photoUrl = "http://placehold.it/600/92c952"; 
     AsyncLoadImage asyncLoadImage = new AsyncLoadImage(); 
     asyncLoadImage.execute(photoUrl); 
    } 
} 

@Override 
public void button_photos_clicked() { 
    photosUrl(); 
} 

Bitmap loadImage(String url) { 
    Bitmap bitmapImage = null; 
    URL imageUrl = null; 
    HttpURLConnection httpURLConnection = null; 
    try { 
     imageUrl = new URL(url.replaceAll("\\r|\\n", "")); 
     httpURLConnection = (HttpURLConnection) imageUrl.openConnection(); 
     bitmapImage = BitmapFactory.decodeStream(httpURLConnection.getInputStream()); 
     Log.d(LOG_TAG, "Runneble: " + "OK"); 
    } catch (MalformedURLException e) { 
     Log.e(LOG_TAG, "image url error: " + e); 
     e.printStackTrace(); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 
    return bitmapImage; 
} 


class AsyncLoadImage extends AsyncTask<String, Void, Bitmap> { 
    String LOG_TAG = "AsyncLoadImage: "; 
    Bitmap bitmapImage; 

    @Override 
    protected Bitmap doInBackground(String... strings) { 
     String request = ""; 
     final URL imageUrl = null; 
     JSONObject jsonObject = null; 
     for (final String address : strings) { 
      Log.d(LOG_TAG, "img url: " + address); 
      bitmapImage = loadImage(address); 

     } 
     return bitmapImage; 
    } 

    @Override 
    protected void onPostExecute(Bitmap bitmapImg) { 
      view.setPhotos(bitmapImg); 
    } 

} 

を}、実装

パブリッククラス例外:httpURLConnection.getInputStream()で接続が拒否されました。私は.getContentを試してこのエラーも受け取ります。 どうすればいいのか教えてください。

このエラーケースを解決しAdWay!)

+0

マニフェストにを追加しました –

+0

はい。私はここから写真のアドレスを取得します:https://jsonplaceholder.typicode.com/photos/3、asynctaskはこのURLで動作しますが、image urlでは動作しません:http://placehold.it/600/92c952 。 例:このURL:https://image.flaticon.com/teams/slug/freepik.jpg仕事... –

答えて

0

をあなたのコードは私のデバイスで完璧に働いています。

インターネット接続が適切に機能していることを確認し、アンドロイドデバイスのブラウザから画像URLを直接開いて、URLにアクセスできることを確認してください。

+0

携帯電話のChromeからこの画像を開くことができます。しかし、私のアプリからは。エラーのスクリーンショット: https://i.stack.imgur.com/3vwlK.png –

+0

他のデバイスでのテスト。それはデバイス固有の問題かもしれません。 –

+0

あなたは正しい!仮想デバイスのコード上で動作しています...前に私のネクサス5で試してみましょう7.1.2 –

関連する問題