title: android.os.NetworkOnMainThreadException when show upload image that from URL
body: <p>I make an app which upload image from device gallery or from camera.
  So, the step I use to achieve that, is by uploading the image into my server and give image URL as return value, and then by using ImageSpan I draw the image into EditText.</p>
  
  <p>My scenario works well until step I upload the picture into server, and the server also give imageURL as return value.
  The problem is when I use that imageURL to draw in EditText, I get android.os.NetworkOnMainThreadException and my app close.</p>
  
  <p>I use AysnTask to upload images into my server and this is the code :</p>
  
  <pre><code>private class UploadFileToServer extends AsyncTask&lt;Void, Integer, String&gt; {
  
      @Override
      protected void onPreExecute() {
          progressBar.setProgress(0);
          super.onPreExecute();
      }
  
      @Override
      protected void onProgressUpdate(Integer... progress) {
          // Making progress bar visible
          progressBar.setVisibility(View.VISIBLE);
          txtPercentage.setVisibility(View.VISIBLE);
          progressBar.setProgress(progress[0]);
          txtPercentage.setText("Uploading... ");
      }
  
      @Override
      protected String doInBackground(Void... params) {
          return uploadFile();
      }
  
      @SuppressWarnings("deprecation")
      private String uploadFile() {
          String responseString = null;
  
          HttpClient httpclient = new DefaultHttpClient();
          HttpPost httppost = new HttpPost(DeveloperKey.FILE_UPLOAD_URL);
  
          String boundary = "---------------------------This is the boundary";
          httppost.addHeader("entype", "multipart/form-data ; boundary="+ boundary);
  
          try {
              AndroidMultiPartEntity entity = new AndroidMultiPartEntity(
                  new ProgressListener() {
  
                      @Override
                      public void transferred(long num) {
                          publishProgress((int) ((num / (float) totalSize) * 100));
                      }
                  });
  
              File sourceFile = new File(filePath);
  
              entity.addPart("data", new FileBody(sourceFile));
  
              totalSize = entity.getContentLength();
              httppost.setEntity(entity);
  
              HttpResponse response = httpclient.execute(httppost);
              HttpEntity r_entity = response.getEntity();
  
              int statusCode = response.getStatusLine().getStatusCode();
              if (statusCode == 200) {
                  responseString = EntityUtils.toString(r_entity);                
              } else {
                  responseString = "Error occurred! Http Status Code: "+ statusCode;
              }
  
          } catch (ClientProtocolException e) {
              responseString = e.toString();
          } catch (IOException e) {
              responseString = e.toString();
          }
  
          return responseString;
      }
  
      @Override
      protected void onPostExecute(String result) {
          Log.e(TAG, "Response from server: " + result);
  
          txtPercentage.setVisibility(View.GONE);
          progressBar.setVisibility(View.GONE);
  
          DrawUploadImage(result); //Part that I use to draw image into EditText
      }
  
  }
  </code></pre>
  
  <p>and this is the code for <strong><em>DrawUploadImage</em></strong> :</p>
  
  <pre><code>private void DrawUploadImage(String message){
  
      SplitFile = message.replaceAll("https://articlephoto.s3.amazonaws.com/opini3_question_image/", "");
      int cursorPosition = editor.getSelectionStart();
      editor.getText().insert(cursorPosition, SplitFile);
      SpannableStringBuilder ssb = new SpannableStringBuilder(editor.getText());
      Drawable img = ImageOperations(this, message, SplitFile+".jpg");
      img.setBounds(0, 0, img.getIntrinsicWidth()/2, img.getIntrinsicHeight()/2);
      ssb.setSpan(new ImageSpan(img, ImageSpan.ALIGN_BASELINE), cursorPosition,  cursorPosition+2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
      editor.setText(ssb, BufferType.SPANNABLE);
      editor.setSelection(cursorPosition+2);
  
  }
  
  private Drawable ImageOperations(Context ctx, String url, String saveFilename) {
      try {
          InputStream is = (InputStream) this.fetch(url);
          Drawable d = Drawable.createFromStream(is, "src");
          return d;
      } catch (MalformedURLException e) {
          e.printStackTrace();
          return null;
      } catch (IOException e) {
          e.printStackTrace();
          return null;
      }
  }
  
  public Object fetch(String address) throws MalformedURLException,IOException {
      URL url = new URL(address);
      Object content = url.getContent();
      return content;
  }
  </code></pre>
  
  <p>and this is the log that show error :</p>
  
  <p><img src="https://i.stack.imgur.com/HPzSq.png" alt="enter image description here"></p>
  
  <p>I have spend much time try to solve this problem.
  So, anyone can help me to solve this?
  Thank you.</p>