簡體   English   中英

AsyncTask#1 java.lang.RuntimeException:執行doInBackground()時發生錯誤

[英]AsyncTask #1 java.lang.RuntimeException: An error occured while executing doInBackground()

我只是android開發的新手,我正在創建一個使用Twitter API來獲取實時Twitter feed的應用程序。 但是,當我單擊btn_twitter_stream ,應用程序崩潰,並且在logcat AsyncTask #1 java.lang.RuntimeException: An error occurred while executing doInBackground()得到了以下錯誤AsyncTask #1 java.lang.RuntimeException: An error occurred while executing doInBackground()

Logcat

02-05 13:12:37.445 11097-11204/? E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
                                                   java.lang.RuntimeException: An error occured while executing doInBackground()
                                                       at android.os.AsyncTask$3.done(AsyncTask.java:299)
                                                       at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
                                                       at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
                                                       at java.util.concurrent.FutureTask.run(FutureTask.java:239)
                                                       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
                                                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
                                                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
                                                       at java.lang.Thread.run(Thread.java:856)
                                                    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 libcore.net.http.HttpConnection.<init>(HttpConnection.java:70)
                                                       at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
                                                       at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:361)
                                                       at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87)
                                                       at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
                                                       at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316)
                                                       at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:461)
                                                       at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:433)
                                                       at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290)
                                                       at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240)
                                                       at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81)
                                                       at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:197)
                                                       at libcore.net.http.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:281)
                                                       at saveourcar.text.twitter.BasicRestClient.request(BasicRestClient.java:81)
                                                       at saveourcar.text.twitter.TwitterRestClient.request(TwitterRestClient.java:17)
                                                       at saveourcar.text.twitter.BasicRestClient.postSync(BasicRestClient.java:53)
                                                       at saveourcar.text.twitter.TwitterRestClient.getBearerToken(TwitterRestClient.java:104)
                                                       at saveourcar.text.twitter.TwitterRestClient$1.doInBackground(TwitterRestClient.java:56)
                                                       at saveourcar.text.twitter.TwitterRestClient$1.doInBackground(TwitterRestClient.java:43)
                                                       at android.os.AsyncTask$2.call(AsyncTask.java:287)
                                                       at java.util.concurrent.FutureTask.run(FutureTask.java:234)
                                                       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
                                                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
                                                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
                                                       at java.lang.Thread.run(Thread.java:856) 
                                                    Caused by: libcore.io.GaiException: getaddrinfo failed: EAI_NODATA (No address associated with hostname)
                                                       at libcore.io.Posix.getaddrinfo(Native Method)
                                                       at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:59)
                                                       at java.net.InetAddress.lookupHostByName(InetAddress.java:405)
                                                       at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 
                                                       at java.net.InetAddress.getAllByName(InetAddress.java:214) 
                                                       at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70) 
                                                       at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50) 
                                                       at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:361) 
                                                       at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87) 
                                                       at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) 
                                                       at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316) 
                                                       at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:461) 
                                                       at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:433) 
                                                       at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290) 
                                                       at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240) 
                                                       at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81) 
                                                       at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:197) 
                                                       at libcore.net.http.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:281) 
                                                       at saveourcar.text.twitter.BasicRestClient.request(BasicRestClient.java:81) 
                                                       at saveourcar.text.twitter.TwitterRestClient.request(TwitterRestClient.java:17) 
                                                       at saveourcar.text.twitter.BasicRestClient.postSync(BasicRestClient.java:53) 
                                                       at saveourcar.text.twitter.TwitterRestClient.getBearerToken(TwitterRestClient.java:104) 
                                                       at saveourcar.text.twitter.TwitterRestClient$1.doInBackground(TwitterRestClient.java:56) 
                                                       at saveourcar.text.twitter.TwitterRestClient$1.doInBackground(TwitterRestClient.java:43) 
                                                       at android.os.AsyncTask$2.call(AsyncTask.java:287) 
                                                       at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
                                                       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
                                                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
                                                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
                                                       at java.lang.Thread.run(Thread.java:856) 
                                                    Caused by: libcore.io.ErrnoException: getaddrinfo failed: EACCES (Permission denied)
                                                       at libcore.io.Posix.getaddrinfo(Native Method) 
                                                       at libcore.io.ForwardingOs.getaddrinfo(ForwardingOs.java:59) 
                                                       at java.net.InetAddress.lookupHostByName(InetAddress.java:405) 
                                                       at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236) 
                                                       at java.net.InetAddress.getAllByName(InetAddress.java:214) 
                                                       at libcore.net.http.HttpConnection.<init>(HttpConnection.java:70) 
                                                       at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50) 
                                                       at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:361) 
                                                       at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:87) 
                                                       at libcore.net.http.HttpConnection.connect(HttpConnection.java:128) 
                                                       at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:316) 
                                                       at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:461) 
                                                       at libcore.net.http.HttpsURLConnectionImpl$HttpsEngine.connect(HttpsURLConnectionImpl.java:433) 
                                                       at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:290) 
                                                       at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:240) 
                                                       at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:81) 
                                                       at libcore.net.http.HttpURLConnectionImpl.getOutputStream(HttpURLConnectionImpl.java:197) 
                                                       at libcore.net.http.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:281) 
                                                       at saveourcar.text.twitter.BasicRestClient.request(BasicRestClient.java:81) 
                                                       at saveourcar.text.twitter.TwitterRestClient.request(TwitterRestClient.java:17) 
                                                       at saveourcar.text.twitter.BasicRestClient.postSync(BasicRestClient.java:53) 
                                                       at saveourcar.text.twitter.TwitterRestClient.getBearerToken(TwitterRestClient.java:104) 
                                                       at saveourcar.text.twitter.TwitterRestClient$1.doInBackground(TwitterRestClient.java:56) 
                                                       at saveourcar.text.twitter.TwitterRestClient$1.doInBackground(TwitterRestClient.java:43) 
                                                       at android.os.AsyncTask$2.call(AsyncTask.java:287) 
                                                       at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
                                                       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
                                                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
                                                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
                                                       at java.lang.Thread.run(Thread.java:856) 

不知道為什么會引發此錯誤,有人可以快速查看一下它是否可以發現任何東西。 這段代碼在我發現的示例中有效,但由於某種原因,它不適用於我。

我的代碼是休假的

我認為這是我的問題是ListTweetsActivity的課程

public class ListTweetsActivity extends AppCompatActivity {

    private static final String LOG_TAG = ListTweetsActivity.class.getSimpleName();

    private TwitterRestClient mHttp;
    private List<Tweet> mTweets;
    private ListTweetsAdapter mTweetsAdapter;

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

        mTweets = new ArrayList<>();
        mHttp = new TwitterRestClient(this);

        RecyclerView recyclerView = (RecyclerView) findViewById(R.id.lst_items);
        recyclerView.setLayoutManager(
                new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
        mTweetsAdapter = new ListTweetsAdapter(this, mTweets);
        recyclerView.setAdapter(mTweetsAdapter);
    }

    @Override
    protected void onResume() {
        super.onResume();
        loadFeeds();
    }

    private void loadFeeds() {
        mHttp.loadTweets("aaroadwatch", new HttpGetRequestListener() {
            @Override
            public void onSuccess(String result) {
                Log.d(LOG_TAG, result);
                List<Tweet> tweets = (new Gson()).fromJson(result,
                        new TypeToken<List<Tweet>>() {
                        }.getType());
                mTweets.clear();
                mTweets.addAll(tweets);
                mTweetsAdapter.notifyDataSetChanged();
            }

            @Override
            public void onFailure(Exception ex) {
                Log.e(LOG_TAG, ex.getMessage());
                Toast.makeText(ListTweetsActivity.this, ex.getMessage(), Toast.LENGTH_SHORT).show();
            }
        });
    }

}

在您的清單中,您不會授予互聯網許可

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

清楚地顯示在日志中:

由以下原因引起:java.lang.SecurityException:權限被拒絕(缺少INTERNET權限?)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM