-2

Android で Twitter アプリにログインしようとすると、logcat に次のエラーが表示されます。アプリケーションから Twitter を起動できません。解決策を教えてください。

03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639): Error creating consumer / provider
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639): oauth.signpost.exception.OAuthCommunicationException: Communication with the service provider failed: null
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:214)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at oauth.signpost.AbstractOAuthProvider.retrieveRequestToken(AbstractOAuthProvider.java:69)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at com.android.twitter.PrepareRequestTokenActivity.initData(PrepareRequestTokenActivity.java:129)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at com.android.twitter.PrepareRequestTokenActivity.onCreate(PrepareRequestTokenActivity.java:64)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at android.app.Activity.performCreate(Activity.java:4470)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1052)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at android.os.Handler.dispatchMessage(Handler.java:99)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at android.os.Looper.loop(Looper.java:137)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at android.app.ActivityThread.main(ActivityThread.java:4511)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at java.lang.reflect.Method.invokeNative(Native Method)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at java.lang.reflect.Method.invoke(Method.java:511)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:980)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:747)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at dalvik.system.NativeStart.main(Native Method)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639): Caused by: android.os.NetworkOnMainThreadException
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at java.net.InetAddress.getAllByName(InetAddress.java:220)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:137)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at oauth.signpost.commonshttp.CommonsHttpOAuthProvider.sendRequest(CommonsHttpOAuthProvider.java:64)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    at oauth.signpost.AbstractOAuthProvider.retrieveToken(AbstractOAuthProvider.java:177)
03-18 12:47:28.412: E/com.android.twitter.PrepareRequestTokenActivity(4639):    ... 17 more
4

4 に答える 4

0

Android OSの最新バージョンのGoogleは、エラーを回避するために、非同期タスクでネットワーク関連のものやその他の重いタスクの実行を強制しましたANR..

ログのメイン スレッド例外に注意してください。原因は次のとおりです。android.os.NetworkOnMainThreadException

この例外は、この制限が..

ASYNC タスクでタスクを実行してみると、 で TWITTER のインスタンスが呼び出されますdoInBackground

public class LoginTwitter extends AsyncTask<Void, Void, Boolean> {
        @Override
        protected Boolean doInBackground(Void... params) {
            // TODO: attempt authentication against a network service.


            // call your loginTwiter here (the way you are calling twitter AOUTH)

            return false;

        }

        @Override
        protected void onPostExecute(final Boolean success) {


        }


    }

実際に現在TwitterLoginを呼び出しているUIクリックでこのクラスを呼び出します

  private View.OnClickListener  LoginTwitter=new View.OnClickListener() {

        @Override
        public void onClick(View paramView) {
            // TODO Auto-generated method stub
            new LoginTwitter().execute((Void) null);;

        }
    };
于 2013-03-18T09:20:46.120 に答える
0

コードに1行追加するだけで、この問題を解決できます。

StrictMode.enableDefaults();

すべての応答に感謝します。

于 2013-03-18T09:17:11.370 に答える
0

この例外は、アプリケーションがメイン スレッドでネットワーク操作を実行しようとするとスローされます。AsyncTask でコードを実行します。

class RetreiveFeedTask extends AsyncTask<String, Void, RSSFeed> {

    private Exception exception;

    protected RSSFeed doInBackground(String... urls) {
        try {
           //POST YOUR CODE HERE!!
        } catch (Exception e) {
            this.exception = e;
            return null;
        }
    }

    protected void onPostExecute(RSSFeed feed) {
        // TODO: check this.exception 
        // TODO: do something with the feed
    }
 }

 new RetreiveFeedTask().execute(urlToRssFeed);
于 2013-03-18T07:30:05.410 に答える
0

このリンクを参照してください

http://androidcodeexamples.blogspot.com/2011/12/how-to-integrate-twitter-in-android.html

あなたはこのリンクからいくつかのアイデアを得る

厳密なモードが有効かどうかを確認しますか?有効にしない場合は、有効にしてください

StrictMode.enableDefaults();
于 2013-03-18T09:27:33.477 に答える