-4
@Override
        protected void onDraw(Canvas canvas) {
            String url = "http://dizay.net/files/yuklenenler/4kuAJ0egT90HnVbJz5czHgsPAL3Z4V8TgLsZC37jm8TdsvO9nZeFg1yNgD0jN.png";
            Bitmap image, temp, x;
            temp = BitmapFactory.decodeResource(getResources(), R.drawable.duvar);
            image = Bitmap.createScaledBitmap(temp, canvas.getWidth(), canvas.getHeight(), true);
            canvas.drawBitmap(image, 0, 0, null);

             x=getBitmapFromURL(url);
          //  Bitmap over = BitmapFactory.decodeResource(getResources(), getBitmapFromURL(url).describeContents());
            image = Bitmap.createScaledBitmap(x, canvas.getWidth(), canvas.getHeight(), true);
            canvas.drawBitmap(image, 0, 0, null);

            temp = BitmapFactory.decodeResource(getResources(), R.drawable.golge);
            image = Bitmap.createScaledBitmap(temp, canvas.getWidth(), canvas.getHeight(), true);
            canvas.drawBitmap(image, 0, 0, null);

            temp = BitmapFactory.decodeResource(getResources(), R.drawable.supurge);
            image = Bitmap.createScaledBitmap(temp, canvas.getWidth(), canvas.getHeight(), true);
            canvas.drawBitmap(image, 0, 0, null);


            temp = BitmapFactory.decodeResource(getResources(), R.drawable.hali);
            image = Bitmap.createScaledBitmap(temp, canvas.getWidth(), canvas.getHeight(), true);
            canvas.drawBitmap(image, 0, 0, null);

            temp = BitmapFactory.decodeResource(getResources(), R.drawable.tablo);
            image = Bitmap.createScaledBitmap(temp, canvas.getWidth(), canvas.getHeight(), true);
            canvas.drawBitmap(image, 0, 0, null);

            temp = BitmapFactory.decodeResource(getResources(), R.drawable.cicek);
            image = Bitmap.createScaledBitmap(temp, canvas.getWidth(), canvas.getHeight(), true);
            canvas.drawBitmap(image, 0, 0, null);


            temp = BitmapFactory.decodeResource(getResources(), R.drawable.mobilya);
            image = Bitmap.createScaledBitmap(temp, canvas.getWidth(), canvas.getHeight(), true);
            canvas.drawBitmap(image, 0, 0, null);

            temp = BitmapFactory.decodeResource(getResources(), R.drawable.sehpa);
            image = Bitmap.createScaledBitmap(temp, canvas.getWidth(), canvas.getHeight(), true);
            canvas.drawBitmap(image, 0, 0, null);

            super.onDraw(canvas);


        }

    }

    public static Bitmap getBitmapFromURL(String src) {
        try {
            URL url = new URL(src);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setDoInput(true);
            connection.connect();
            InputStream input = connection.getInputStream();
            Bitmap myBitmap = BitmapFactory.decodeStream(input);
            return myBitmap;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}

}

error

09-07 05:10:54.913 1888-1888/com.example.dogushur.canvas E/AndroidRuntime: FATAL EXCEPTION: main
                                                                           Process: com.example.dogushur.canvas, PID: 1888
                                                                           android.os.NetworkOnMainThreadException
                                                                               at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273)
                                                                               at java.net.InetAddress.lookupHostByName(InetAddress.java:431)
                                                                               at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
                                                                               at java.net.InetAddress.getAllByName(InetAddress.java:215)
                                                                               at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)
                                                                               at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:188)
                                                                               at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:157)
                                                                               at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:100)
                                                                               at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:357)
                                                                               at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:340)
                                                                               at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
                                                                               at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
                                                                               at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)
                                                                               at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114)
                                                                               at com.example.dogushur.canvas.MainActivity.getBitmapFromURL(MainActivity.java:106)
                                                                               at com.example.dogushur.canvas.MainActivity$Ciz.onDraw(MainActivity.java:60)
                                                                               at android.view.View.draw(View.java:16178)
                                                                               at android.view.View.updateDisplayListIfDirty(View.java:15174)
                                                                               at android.view.View.draw(View.java:15948)
                                                                               at android.view.ViewGroup.drawChild(ViewGroup.java:3609)
                                                                               at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)
                                                                               at android.view.View.updateDisplayListIfDirty(View.java:15169)
                                                                               at android.view.View.draw(View.java:15948)
                                                                               at android.view.ViewGroup.drawChild(ViewGroup.java:3609)
                                                                               at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)
                                                                               at android.view.View.updateDisplayListIfDirty(View.java:15169)
                                                                               at android.view.View.draw(View.java:15948)
                                                                               at android.view.ViewGroup.drawChild(ViewGroup.java:3609)
                                                                               at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)
                                                                               at android.view.View.updateDisplayListIfDirty(View.java:15169)
                                                                               at android.view.View.draw(View.java:15948)
                                                                               at android.view.ViewGroup.drawChild(ViewGroup.java:3609)
                                                                               at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)
                                                                               at android.view.View.updateDisplayListIfDirty(View.java:15169)
                                                                               at android.view.View.draw(View.java:15948)
                                                                               at android.view.ViewGroup.drawChild(ViewGroup.java:3609)
                                                                               at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)
                                                                               at android.view.View.updateDisplayListIfDirty(View.java:15169)
                                                                               at android.view.View.draw(View.java:15948)
                                                                               at android.view.ViewGroup.drawChild(ViewGroup.java:3609)
                                                                               at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)
                                                                               at android.view.View.updateDisplayListIfDirty(View.java:15169)
                                                                               at android.view.View.draw(View.java:15948)
                                                                               at android.view.ViewGroup.drawChild(ViewGroup.java:3609)
                                                                               at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399)
                                                                               at android.view.View.draw(View.java:16181)
                                                                               at com.android.internal.policy.PhoneWindow$DecorView.draw(PhoneWindow.java:2690)
                                                                               at android.view.View.updateDisplayListIfDirty(View.java:15174)
                                                                               at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:281)
                                                                               at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:287)
                                                                               at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:322)
                                                                               at android.view.ViewRootImpl.draw(ViewRootImpl.java:2615)
                                                                               at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2434)
                                                                               at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2067)
                                                                               at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107)
                                                                               at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013)
                                                                               at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858)
                                                                               at android.view.Choreographer.doCallbacks(Choreographer.java:670)
                                                                               at android.view.Choreographer.doFrame(Choreographer.java:606)
                                                                            at android.view.Choreographer$FrameDis
09-07 05:15:55.288 1888-1888/com.example.dogushur.canvas I/Process: Sending signal. PID: 1888 SIG: 9
Zoe
  • 27,060
  • 21
  • 118
  • 148
  • You want to display an image from URL? Why not use an image library like Picasso? – Aleksandar Stefanović Sep 07 '16 at 09:45
  • 2
    Possible duplicate of [How to fix android.os.NetworkOnMainThreadException?](http://stackoverflow.com/questions/6343166/how-to-fix-android-os-networkonmainthreadexception) – Mike M. Sep 07 '16 at 09:47
  • Put `x=getBitmapFromURL(url);` under a thread or asynctask then do the rest after getting the result from url. Hope it will solve your problem. – Md Sufi Khan Sep 07 '16 at 10:29

1 Answers1

0

You cannot do network stuff in the main thread. You have to create an Async operation:

class Check extends AsyncTask<String, Integer, Bitmap b> {

    @Override
    protected Bitmap doInBackground(String... src) {
        URL url = new URL(src);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap myBitmap = BitmapFactory.decodeStream(input);
        setBitmap(myBitmap);//for access in main class
        return myBitmap;
        //do connections
    }
}

And to call the code:

new Check().execute("https://example.com");

You can disable StrictMode, but it is a very bad idea. It is enabled in the first place for a reason.

If You decide to disable StrictMode, do it like this:

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);

Though, doing it inpropperly will lead to something like this: Android freeze screen 20 seconds after execute a HTTP Post

Community
  • 1
  • 1
Zoe
  • 27,060
  • 21
  • 118
  • 148
  • Can you explain more in detail – Hamza Sonay Sep 07 '16 at 10:01
  • Android has something called "StrictMode". This prevents apps from connecting to the internet on the main thread. Therefore, it is possible to connect to the internet with an Async operation You can dissable StrictMode, though it is a very bad idea. – Zoe Sep 07 '16 at 10:05