0

Okay, I have a code that used to work just fine and right now it doesn't work only for devices, lower than 11. Everything starts out fine and in my main activity I launch an AsyncTask, inside doInBackground appears the error as shown below:

    @Override
    protected Integer doInBackground(Integer... params) {
        final String info = getString(R.string.inf);
        final String post = getString(R.string.pos);
        final String main = getString(R.string.mai);

        String val1 = "";
        String val2 = "";
        String val3 = "";

        int connSucc = 3;

            try {
                JSONTokener sbTokener = new JSONTokener(Sources.httpGet(infoUrlStr).toString()); //==========>>It crashes right here

                JSONArray jArray=new JSONArray(sbTokener);
                for(int i=0; i<(jArray.length()); i++)
            {
                JSONObject json_obj_inf = jArray.getJSONObject(i);
             .
             .
             .

So I checked Sources.httpGet:

public static StringBuilder httpGet (String urlStr) {
    StringBuilder err = new StringBuilder();
    hata.append("Error!");

    HttpURLConnection conn = null;
    BufferedReader rd = null;
    StringBuilder sb = null;
    try {
        URL url = new URL(urlStr);
        conn = (HttpURLConnection) url.openConnection();
        conn.setConnectTimeout(6000);
        conn.setReadTimeout(10000);
        if (conn.getResponseCode() >= 200 && conn.getResponseCode() <= 299) {
            rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            sb = new StringBuilder();
            String line;
            while ((line = rd.readLine()) != null) {
                sb.append(line);
            }
            rd.close();

            conn.disconnect();

        }
        else {
            return err;
        }
    }
    catch (NetworkOnMainThreadException a) {
        return err;
    }
    catch (Exception e) {
        return err;
    }
    finally {
        if (rd != null) {
            try {
                rd.close();
            } catch (IOException e) {
                return err;
            }
        }
        if (conn != null) {
            conn.disconnect();
        }
    }
    return sb;
}

I think it can't even get to this httpGet method. As I've said this works just fine for api level higher than 11. Below is my logcat which didn't help me that much.

12-20 10:32:11.194: E/AndroidRuntime(357): FATAL EXCEPTION: AsyncTask #1
12-20 10:32:11.194: E/AndroidRuntime(357): java.lang.RuntimeException: An error occured while executing doInBackground()
12-20 10:32:11.194: E/AndroidRuntime(357):  at android.os.AsyncTask$3.done(AsyncTask.java:200)
12-20 10:32:11.194: E/AndroidRuntime(357):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
12-20 10:32:11.194: E/AndroidRuntime(357):  at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
12-20 10:32:11.194: E/AndroidRuntime(357):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
12-20 10:32:11.194: E/AndroidRuntime(357):  at java.util.concurrent.FutureTask.run(FutureTask.java:137)
12-20 10:32:11.194: E/AndroidRuntime(357):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
12-20 10:32:11.194: E/AndroidRuntime(357):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
12-20 10:32:11.194: E/AndroidRuntime(357):  at java.lang.Thread.run(Thread.java:1096)
12-20 10:32:11.194: E/AndroidRuntime(357): Caused by: java.lang.VerifyError: com.akilli.ticaret.source.Sources
12-20 10:32:11.194: E/AndroidRuntime(357):  at com.akilli.ticaret.Main$RestRequ.doInBackground(Main.java:130)
12-20 10:32:11.194: E/AndroidRuntime(357):  at com.akilli.ticaret.Main$RestRequ.doInBackground(Main.java:1)
12-20 10:32:11.194: E/AndroidRuntime(357):  at android.os.AsyncTask$2.call(AsyncTask.java:185)
12-20 10:32:11.194: E/AndroidRuntime(357):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
12-20 10:32:11.194: E/AndroidRuntime(357):  ... 4 more
12-20 10:32:13.064: E/WindowManager(357): Activity com.akilli.ticaret.Main has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@45fa6e78 that was originally added here
12-20 10:32:13.064: E/WindowManager(357): android.view.WindowLeaked: Activity com.akilli.ticaret.Main has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView@45fa6e78 that was originally added here
12-20 10:32:13.064: E/WindowManager(357):   at android.view.ViewRoot.<init>(ViewRoot.java:247)
12-20 10:32:13.064: E/WindowManager(357):   at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148)
12-20 10:32:13.064: E/WindowManager(357):   at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
12-20 10:32:13.064: E/WindowManager(357):   at android.view.Window$LocalWindowManager.addView(Window.java:424)
12-20 10:32:13.064: E/WindowManager(357):   at android.app.Dialog.show(Dialog.java:241)
12-20 10:32:13.064: E/WindowManager(357):   at com.akilli.ticaret.Main$RestRequ.onPreExecute(Main.java:111)
12-20 10:32:13.064: E/WindowManager(357):   at android.os.AsyncTask.execute(AsyncTask.java:391)
12-20 10:32:13.064: E/WindowManager(357):   at com.akilli.ticaret.Main$1.onClick(Main.java:50)
12-20 10:32:13.064: E/WindowManager(357):   at android.view.View.performClick(View.java:2408)
12-20 10:32:13.064: E/WindowManager(357):   at android.view.View$PerformClick.run(View.java:8816)
12-20 10:32:13.064: E/WindowManager(357):   at android.os.Handler.handleCallback(Handler.java:587)
12-20 10:32:13.064: E/WindowManager(357):   at android.os.Handler.dispatchMessage(Handler.java:92)
12-20 10:32:13.064: E/WindowManager(357):   at android.os.Looper.loop(Looper.java:123)
12-20 10:32:13.064: E/WindowManager(357):   at android.app.ActivityThread.main(ActivityThread.java:4627)
12-20 10:32:13.064: E/WindowManager(357):   at java.lang.reflect.Method.invokeNative(Native Method)
12-20 10:32:13.064: E/WindowManager(357):   at java.lang.reflect.Method.invoke(Method.java:521)
12-20 10:32:13.064: E/WindowManager(357):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-20 10:32:13.064: E/WindowManager(357):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-20 10:32:13.064: E/WindowManager(357):   at dalvik.system.NativeStart.main(Native Method)

I'd really appreciate the help, I probable made a rookie mistake, and the reason it says that a window is leaked is probably because it crashes before it's even able to dismiss the dialogbox.

Suhrahj Rothgar
  • 283
  • 6
  • 21
  • possible duplicate of [A code that used to work works no more for api level lower than 11 - crash doInBackground](http://stackoverflow.com/questions/20700379/a-code-that-used-to-work-works-no-more-for-api-level-lower-than-11-crash-doinb) – laalto Dec 20 '13 at 10:37
  • @laalto is ther a way for me to 'know' that a code no longer works for api leve lower than 11? how do I keep up and not make a big mess? – Suhrahj Rothgar Dec 20 '13 at 10:39
  • Android Lint generally does a good job of giving warnings about things that are not available in your minSdkLevel. So, pay attention to warnings and run full project lint regularly. – laalto Dec 20 '13 at 10:42
  • @laalto right, will do and thanks a lot! – Suhrahj Rothgar Dec 20 '13 at 10:44

1 Answers1

1

You are probably using some library that doesn't support Android < API 11

In the future, search stackoverflow for your Java Exception. Getting "Caused by: java.lang.VerifyError:"

Community
  • 1
  • 1
Stefan de Bruijn
  • 6,289
  • 2
  • 23
  • 31