2016-12-04 64 views
1

这就是我的代码。我会遇到很多错误。请帮助我,我是新来 编程的Java我得到这个错误:致命例外:AsyncTask#1

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 


     AsyncTask<String, Object, StringBuilder> listEmpresasTask = new AsyncTask<String, Object, StringBuilder>() { 
      @Override 
      protected StringBuilder doInBackground(String... params) { 
       StringBuilder stringBuilder = new StringBuilder(); 
       try { 
        URL url = new URL("http://gsweb-tiagoseibel.rhcloud.com/empresas.json"); //exemplo de conex�o 
        HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
        con.setRequestMethod("GET"); 
        BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream())); 

        String linha; 
        while ((linha = br.readLine()) != null) { 
         stringBuilder.append(linha); 
        } 
        br.close(); 
       } catch (MalformedURLException e) { 
        e.printStackTrace(); 

       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       return stringBuilder; 
      } 

      @Override 
      protected void onPostExecute(StringBuilder stringBuilder) { 
       super.onPostExecute(stringBuilder); 
       List<String> list = new ArrayList<String>(); 

       try { 
        JSONArray marcas = new JSONArray(stringBuilder.toString()); 
        for (int i = 0; i < marcas.length(); i++) { 
         String marcaID = marcas.optJSONObject(i).optString("id"); 
         String marcaDesc = marcas.optJSONObject(i).optString("descricao"); 
         list.add(marcaID + " - " + marcaDesc); 
        } 
       } catch (JSONException e) { 
        Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT); 
        e.printStackTrace(); 
       } 
       Toast.makeText(getApplicationContext(), "Lista de Cooperativas", Toast.LENGTH_LONG).show(); 

       ArrayAdapter<String> ad = new ArrayAdapter<String>(getApplicationContext(), R.layout.list_item, list); 
       ListView lv = (ListView) findViewById(R.id.listView); 
       lv.setAdapter(ad); 
      } 

     }; 



    listEmpresasTask.execute(); 

} 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

错误:

12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: Process: com.example.anderson.myapplication, PID: 2114 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: java.lang.RuntimeException: An error occurred while executing doInBackground() 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at android.os.AsyncTask$3.done(AsyncTask.java:309) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.util.concurrent.FutureTask.setException(FutureTask.java:223) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.util.concurrent.FutureTask.run(FutureTask.java:242) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.lang.Thread.run(Thread.java:818) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: Caused by: java.lang.SecurityException: Permission denied (missing INTERNET permission?) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.net.InetAddress.lookupHostByName(InetAddress.java:464) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.net.InetAddress.getAllByName(InetAddress.java:215) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:188) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:157) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:100) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:357) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:340) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.example.anderson.myapplication.MainActivity$1.doInBackground(MainActivity.java:48) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.example.anderson.myapplication.MainActivity$1.doInBackground(MainActivity.java:40) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at android.os.AsyncTask$2.call(AsyncTask.java:295) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.util.concurrent.FutureTask.run(FutureTask.java:237) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.lang.Thread.run(Thread.java:818)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at libcore.io.Posix.android_getaddrinfo(Native Method) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.net.InetAddress.lookupHostByName(InetAddress.java:451) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.net.InetAddress.getAllByName(InetAddress.java:215)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:188)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:157)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:100)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:357)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:340)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.example.anderson.myapplication.MainActivity$1.doInBackground(MainActivity.java:48)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.example.anderson.myapplication.MainActivity$1.doInBackground(MainActivity.java:40)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at android.os.AsyncTask$2.call(AsyncTask.java:295)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.util.concurrent.FutureTask.run(FutureTask.java:237)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.lang.Thread.run(Thread.java:818)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: Caused by: android.system.ErrnoException: android_getaddrinfo failed: EACCES (Permission denied) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at libcore.io.Posix.android_getaddrinfo(Native Method)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.net.InetAddress.lookupHostByName(InetAddress.java:451)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.net.InetAddress.getAllByName(InetAddress.java:215)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:188)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:157)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:100)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:357)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:340)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:384)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:231)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.example.anderson.myapplication.MainActivity$1.doInBackground(MainActivity.java:48)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at com.example.anderson.myapplication.MainActivity$1.doInBackground(MainActivity.java:40)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at android.os.AsyncTask$2.call(AsyncTask.java:295)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.util.concurrent.FutureTask.run(FutureTask.java:237)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at java.lang.Thread.run(Thread.java:818)  12-04 10:44:22.607 2114-2114/com.example.anderson.myapplication I/Choreographer: Skipped 38 frames! The application may be doing too much work on its main thread. 12-04 10:44:23.767 2114-2123/com.example.anderson.myapplication W/art: Suspending all threads took: 10.982ms 12-04 10:44:24.099 2114-2114/com.example.anderson.myapplication W/art: Long monitor contention event with owner method=void android.os.MessageQueue.nativeWake(long) from MessageQueue.java:4294967294 waiters=0 for 557ms 12-04 10:44:24.142 2114-2135/com.example.anderson.myapplication E/Surface: getSlotFromBufferLocked: unknown buffer: 0xab811e00 12-04 10:44:27.078 2114-2134/com.example.anderson.myapplication I/Process: Sending signal. PID: 2114 SIG: 9

回答

2

需要在清单文件中添加权限。从你粘贴的错误

java.lang.SecurityException: Permission denied (missing INTERNET permission?) 12-04 10:44:21.900 2114-2134/com.example.anderson.myapplication E/AndroidRuntime: at 

在使用互联网之前添加适当的权限。

1

补充一点:到AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET" /> 

应用标签外

相关问题