title: How to check if a URL is an image or Youtube video
body: <p>I have created this method which firsts checks if a URL is valid, and then checks if it links to an image or if it is a youtube video. My program fails when it gets to the </p>
  
  <pre><code>String contentType = connection.getHeaderField("Content-Type"); 
  </code></pre>
  
  <p>portion of the method. Why is this happening?</p>
  
  <p>Also, is it extraneous to check if its a valid URL using URLUtil.isValidUrl() as well as creating a connection and attempting to open that connection.</p>
  
  <pre><code>private boolean checkContent() {
      //check if valid image
      boolean img = false;
      boolean youtube = false;
      if(URLUtil.isValidUrl(imageAddress)) {
          URLConnection connection = null;
          try {
              connection = new URL(imageAddress).openConnection();
          } catch (IOException e) {
              e.printStackTrace();
          }
          String contentType = connection.getHeaderField("Content-Type");
          img = contentType.startsWith("image/");
  
          if(!img) {
              // Check host of url if youtube exists
              Uri uri = Uri.parse(imageAddress);
              if ("www.youtube.com".equals(uri.getHost()))
                  youtube = true;
          }
      }
      return img || youtube;
  }
  </code></pre>
  
  <p>I have internet permissions in my Manifest!!!</p>
  
  <pre><code>Process: com.example.robert.demo, PID: 11504
  java.lang.IllegalStateException: Could not execute method of the activity
          at android.view.View$1.onClick(View.java:4020)
          at android.view.View.performClick(View.java:4780)
          at android.view.View$PerformClick.run(View.java:19866)
          at android.os.Handler.handleCallback(Handler.java:739)
          at android.os.Handler.dispatchMessage(Handler.java:95)
          at android.os.Looper.loop(Looper.java:135)
          at android.app.ActivityThread.main(ActivityThread.java:5257)
          at java.lang.reflect.Method.invoke(Native Method)
          at java.lang.reflect.Method.invoke(Method.java:372)
          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
  
  java.lang.reflect.InvocationTargetException
              at java.lang.reflect.Method.invoke(Native Method)
              at java.lang.reflect.Method.invoke(Method.java:372)
              at android.view.View$1.onClick(View.java:4015)
              at android.view.View.performClick(View.java:4780)
              at android.view.View$PerformClick.run(View.java:19866)
              at android.os.Handler.handleCallback(Handler.java:739)
              at android.os.Handler.dispatchMessage(Handler.java:95)
              at android.os.Looper.loop(Looper.java:135)
              at android.app.ActivityThread.main(ActivityThread.java:5257)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.lang.reflect.Method.invoke(Method.java:372)
              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
       Caused by: android.os.NetworkOnMainThreadException
              at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1147)
              at java.net.InetAddress.lookupHostByName(InetAddress.java:418)
              at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
              at java.net.InetAddress.getAllByName(InetAddress.java:215)
              at com.android.okhttp.HostResolver$1.getAllByName(HostResolver.java:29)
              at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:232)
              at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:124)
              at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:272)
              at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:211)
              at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:382)
              at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:332)
              at com.android.okhttp.internal.http.HttpURLConnectionImpl.getHeaderField(HttpURLConnectionImpl.java:161)
              at com.example.robert.demo.Demo.checkContent(Demo.java:110)
              at com.example.robert.demo.Demo.submitFile(Demo.java:89)
              at com.example.robert.demo.Demo.submitClick(Demo.java:65)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.lang.reflect.Method.invoke(Method.java:372)
              at android.view.View$1.onClick(View.java:4015)
              at android.view.View.performClick(View.java:4780)
              at android.view.View$PerformClick.run(View.java:19866)
              at android.os.Handler.handleCallback(Handler.java:739)
              at android.os.Handler.dispatchMessage(Handler.java:95)
              at android.os.Looper.loop(Looper.java:135)
              at android.app.ActivityThread.main(ActivityThread.java:5257)
              at java.lang.reflect.Method.invoke(Native Method)
              at java.lang.reflect.Method.invoke(Method.java:372)
              at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
              at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
  </code></pre>