Вопрос

I am trying to change a class from another project I was working with a ListActivity and I vote to fragment the app to compile, this part throws an error:

05-06 21:58:16.928  26584-26676/com.learn2crack.tab E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
    Process: com.learn2crack.tab, PID: 26584
    java.lang.RuntimeException: An error occured while executing doInBackground()
            at android.os.AsyncTask$3.done(AsyncTask.java:300)
            at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
            at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
            at java.util.concurrent.FutureTask.run(FutureTask.java:242)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:841)
     Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?)
            at java.net.InetAddress.lookupHostByName(InetAddress.java:418)
            at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
            at java.net.InetAddress.getAllByName(InetAddress.java:214)
            at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
            at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
            at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
            at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
            at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
            at com.learn2crack.tab.ServiceHandler.makeServiceCall(ServiceHandler.java:75)
            at com.learn2crack.tab.ServiceHandler.makeServiceCall(ServiceHandler.java:39)
            at com.learn2crack.tab.Android$GetContacts.doInBackground(Android.java:70)
            at com.learn2crack.tab.Android$GetContacts.doInBackground(Android.java:51)
            at android.os.AsyncTask$2.call(AsyncTask.java:288)
            at java.util.concurrent.FutureTask.run(FutureTask.java:237)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:841)

Class AsyncTask:

private class GetContacts extends AsyncTask {

@Override
protected void onPreExecute() {
    super.onPreExecute();
    // Showing progress dialog
    pDialog = new ProgressDialog(getActivity());
    pDialog.setMessage("Espere, cargando datos...");
    pDialog.setCancelable(false);
    pDialog.show();

}

@Override
protected Void doInBackground(Void... arg0) {
    // Creating service handler class instance
    ServiceHandler sh = new ServiceHandler();

    // Making a request to url and getting response
    String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET);

    Log.d("Response: ", "> " + jsonStr);

    if (jsonStr != null) {
        try {
            JSONObject jsonObj = new JSONObject(jsonStr);

            // Conseguir nodo matriz JSON
            categories = jsonObj.getJSONArray(TAG_CONTACTS);

            // bucle a través de todos las categorias
            for (int i = 0; i < categories.length(); i++) {
                JSONObject c = categories.getJSONObject(i);

                String id = c.getString(TAG_ID);
                String title = c.getString(TAG_title);
                String slug = c.getString(TAG_slug);

                String desc = c.getString(TAG_description);


                // tmp hashmap para las ventanillas únicas
                HashMap<String, String> contact = new HashMap<String, String>();

                // adding each child node to HashMap key => value
                contact.put(TAG_ID, id);
                contact.put(TAG_title, title);
                contact.put(TAG_slug, slug);
                contact.put(TAG_description, desc);

                // añadir categoria a la lista de categorias
                contactList.add(contact);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    } else {
        Log.e("ServiceHandler", "no pudo obtener ningún dato de la url");
    }

    return null;
}

@Override
protected void onPostExecute(Void result) {
    super.onPostExecute(result);
    // Dismiss the progress dialog
    if (pDialog.isShowing())
        pDialog.dismiss();
    /**
     * Actualización de datos analizados JSON en ListView
     * */
    ListView  vista = (ListView) getActivity().findViewById(R.id.list);
    ListAdapter adapter = new SimpleAdapter(
            getActivity(), contactList,
            R.layout.list_item, new String[]{TAG_title, TAG_description,
            TAG_ID}, new int[]{R.id.name,
            R.id.desc, R.id.id}
    );

    vista.setAdapter(adapter);
}

}

Это было полезно?

Решение

It appears you don't have the appropriate permissions. Add this line to your manifest.xml

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top