Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8585567
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 11, 20262026-06-11T22:05:51+00:00 2026-06-11T22:05:51+00:00

I tried to apply this tutorial as it in gingerbread and it works well

  • 0

I tried to apply this tutorial as it in gingerbread and it works well
http://www.androidhive.info/2012/01/android-json-parsing-tutorial/
but it crashes on ICS ( In Samsung S2 and HTC one X real devices not emulator).

So how can I code public application for wide range phone .. ?
I really feel frustrated today after this problem .
Even I solved this problem with your help . Is there official instruction page or something like that stuff to know how to update gingerbread code to make it compatible with ICS.?
Best Regards .

package com.example.json.pwd;

import java.util.ArrayList;
import java.util.HashMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.ListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class AndroidJSONParsingActivity extends ListActivity {

    // url to make request
    private static String url = "http://api.androidhive.info/contacts/";

    // JSON Node names
    private static final String TAG_CONTACTS = "contacts";
    private static final String TAG_ID = "id";
    private static final String TAG_NAME = "name";
    private static final String TAG_EMAIL = "email";
    private static final String TAG_ADDRESS = "address";
    private static final String TAG_GENDER = "gender";
    private static final String TAG_PHONE = "phone";
    private static final String TAG_PHONE_MOBILE = "mobile";
    private static final String TAG_PHONE_HOME = "home";
    private static final String TAG_PHONE_OFFICE = "office";

    // contacts JSONArray
    JSONArray contacts = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // Hashmap for ListView
        ArrayList<HashMap<String, String>> contactList = new ArrayList<HashMap<String, String>>();

        // Creating JSON Parser instance
        JSONParser jParser = new JSONParser();

        // getting JSON string from URL
        JSONObject json = jParser.getJSONFromUrl(url);

        try {
            // Getting Array of Contacts
            contacts = json.getJSONArray(TAG_CONTACTS);

            // looping through All Contacts
            for(int i = 0; i < contacts.length(); i++){
                JSONObject c = contacts.getJSONObject(i);

                // Storing each json item in variable
                String id = c.getString(TAG_ID);
                String name = c.getString(TAG_NAME);
                String email = c.getString(TAG_EMAIL);
                String address = c.getString(TAG_ADDRESS);
                String gender = c.getString(TAG_GENDER);

                // Phone number is agin JSON Object
                JSONObject phone = c.getJSONObject(TAG_PHONE);
                String mobile = phone.getString(TAG_PHONE_MOBILE);
                String home = phone.getString(TAG_PHONE_HOME);
                String office = phone.getString(TAG_PHONE_OFFICE);

                // creating new HashMap
                HashMap<String, String> map = new HashMap<String, String>();

                // adding each child node to HashMap key => value
                map.put(TAG_ID, id);
                map.put(TAG_NAME, name);
                map.put(TAG_EMAIL, email);
                map.put(TAG_PHONE_MOBILE, mobile);

                // adding HashList to ArrayList
                contactList.add(map);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }


        /**
         * Updating parsed JSON data into ListView
         * */
        ListAdapter adapter = new SimpleAdapter(this, contactList,
                R.layout.list_item,
                new String[] { TAG_NAME, TAG_EMAIL, TAG_PHONE_MOBILE }, new int[] {
                        R.id.name, R.id.email, R.id.mobile });

        setListAdapter(adapter);

        // selecting single ListView item
        ListView lv = getListView();

        // Launching new screen on Selecting Single ListItem
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // getting values from selected ListItem
                String name = ((TextView) view.findViewById(R.id.name)).getText().toString();
                String cost = ((TextView) view.findViewById(R.id.email)).getText().toString();
                String description = ((TextView) view.findViewById(R.id.mobile)).getText().toString();

                // Starting new intent
                Intent in = new Intent(getApplicationContext(), SingleMenuItemActivity.class);
                in.putExtra(TAG_NAME, name);
                in.putExtra(TAG_EMAIL, cost);
                in.putExtra(TAG_PHONE_MOBILE, description);
                startActivity(in);

            }
        });
    }
}

package com.example.json.pwd;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;

import android.util.Log;

public class JSONParser {

    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";

    // constructor
    public JSONParser() {

    }

    public JSONObject getJSONFromUrl(String url) {

        // Making HTTP request
        try {
            // defaultHttpClient
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(url);

            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();           

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    is, "iso-8859-1"), 8);
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            is.close();
            json = sb.toString();
        } catch (Exception e) {
            Log.e("Buffer Error", "Error converting result " + e.toString());
        }

        // try parse the string to a JSON object
        try {
            jObj = new JSONObject(json);
        } catch (JSONException e) {
            Log.e("JSON Parser", "Error parsing data " + e.toString());
        }

        // return JSON String
        return jObj;

    }
}

package com.example.json.pwd;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

public class SingleMenuItemActivity  extends Activity {

    // JSON node keys
    private static final String TAG_NAME = "name";
    private static final String TAG_EMAIL = "email";
    private static final String TAG_PHONE_MOBILE = "mobile";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.single_list_item);

        // getting intent data
        Intent in = getIntent();

        // Get JSON values from previous intent
        String name = in.getStringExtra(TAG_NAME);
        String cost = in.getStringExtra(TAG_EMAIL);
        String description = in.getStringExtra(TAG_PHONE_MOBILE);

        // Displaying all values on the screen
        TextView lblName = (TextView) findViewById(R.id.name_label);
        TextView lblCost = (TextView) findViewById(R.id.email_label);
        TextView lblDesc = (TextView) findViewById(R.id.mobile_label);

        lblName.setText(name);
        lblCost.setText(cost);
        lblDesc.setText(description);
    }
}

Finally Logcat
09-25 21:56:13.262: D/AndroidRuntime(1475): Shutting down VM
09-25 21:56:13.262: W/dalvikvm(1475): threadid=1: thread exiting with uncaught exception (group=0xb40a0180)
09-25 21:56:13.343: E/AndroidRuntime(1475): FATAL EXCEPTION: main
09-25 21:56:13.343: E/AndroidRuntime(1475): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.json.pwd/com.example.json.pwd.AndroidJSONParsingActivity}: android.os.NetworkOnMainThreadException
09-25 21:56:13.343: E/AndroidRuntime(1475):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at android.app.ActivityThread.access$600(ActivityThread.java:123)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at android.os.Looper.loop(Looper.java:137)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at android.app.ActivityThread.main(ActivityThread.java:4424)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at java.lang.reflect.Method.invokeNative(Native Method)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at java.lang.reflect.Method.invoke(Method.java:511)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at dalvik.system.NativeStart.main(Native Method)
09-25 21:56:13.343: E/AndroidRuntime(1475): Caused by: android.os.NetworkOnMainThreadException
09-25 21:56:13.343: E/AndroidRuntime(1475):     at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at java.net.InetAddress.getAllByName(InetAddress.java:220)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at com.example.json.pwd.JSONParser.getJSONFromUrl(JSONParser.java:38)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at com.example.json.pwd.AndroidJSONParsingActivity.onCreate(AndroidJSONParsingActivity.java:54)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at android.app.Activity.performCreate(Activity.java:4465)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
09-25 21:56:13.343: E/AndroidRuntime(1475):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
09-25 21:56:13.343: E/AndroidRuntime(1475):     ... 11 more
09-25 21:56:21.553: I/dalvikvm(1475): threadid=3: reacting to signal 3
09-25 21:56:21.563: I/dalvikvm(1475): Wrote stack traces to '/data/anr/traces.txt'
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-11T22:05:52+00:00Added an answer on June 11, 2026 at 10:05 pm

    It should be due to implementation of Strict mode after Android 3.0 version,any time taking implementation like network calls ,database implementation needs to be called inside an Asynctask or a thread..

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I was reading this tutorial from the DNN website http://www.dotnetnuke.com/Community/Blogs/tabid/825/EntryId/2675/DotNetNuke-Skinning-101-Part-2.aspx I found the tutorial
I tried to use this code but it doesn't work. http://developer.apple.com/library/ios/#samplecode/PageControl/Introduction/Intro.html Ld /Users/waitonza/Library/Developer/Xcode/DerivedData/Dr_Ngoo-aanknxmuodcgjicaigxevljxokeq/Build/Products/Debug-iphonesimulator/Dr Ngoo.app/Dr
I'm trying to apply this tutorial to my project, but I don't get it
Just bought a new Macbook Pro and tried to follow this tutorial step by
i wrote a simple class that derives QPushButton, and tried to apply stylesheet on
I have tried almost all the techniques to apply sticky footer to my site
Hi i want to apply style on every 2nd <li> i have tried <script>
I've really tried to get through the intent.putExtra() and getIntent().getExtras() and apply them to
I was reading this tutorial for a simple PHP login system . In the
I've searched and searched for a tutorial for this but none of them are

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.