0

Twitter4J を使用して Twitter に接続します。WebView に WebViewClient を設定することで、既定のブラウザーからの読み込みを防ぎます。問題は、Twitter がアクティビティに戻らないことです。リダイレクト後、WebView で「Web ページは利用できません」と表示されます。

通話中

        final RequestToken requestToken = twitter.getOAuthRequestToken(Constant.CALLBACK_URL);
        twitterSite.loadUrl(requestToken.getAuthenticationURL());

onNewIntent & WebViewClient

@Override
protected void onNewIntent(final Intent intent) {
    super.onNewIntent(intent);
    setResult(RESULT_OK);
    finish();
}

private class CustomWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(final WebView view, final String url) {         
        if(url.startsWith("http")) {
            view.loadUrl(url);
            return true;
        }

        return false;
    }

マニフェスト

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    >
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name=".TwitterLoginActivity"
        android:label="@string/title_activity_main" 
        android:launchMode="singleInstance">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="test123"/>
        </intent-filter>
    </activity>
</application>

CALLBACK_URL

public static final String CALLBACK_URL = "test123:///";
4

2 に答える 2

1

あなたのコードは大丈夫です。以下のように変更するだけです

 private class CustomWebViewClient extends WebViewClient 
     {
        @Override
        public boolean shouldOverrideUrlLoading(final WebView view, final String url)     
        {         
            if(url.startsWith(Constant.CALLBACK_URL))
            {
              //set visibility  GONE/INVISIBLE for webview.
            }
            else if(url.startsWith("http")) 
            {
                view.loadUrl(url);
                return true;
            }

            return false;
        }
于 2012-08-02T06:51:03.427 に答える
0

そのように使用する必要があると思います:1)、

public static final String CALLBACK_URL = "test123://TwitterLoginActivity";

2)、

<activity
        android:name=".TwitterLoginActivity"
        android:label="@string/title_activity_main" 
        android:launchMode="singleInstance">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="test123"  android:host="TwitterLoginActivity"/>
        </intent-filter>
    </activity>

Pls はそれをテストします。頑張ってください!

于 2012-08-02T06:26:09.217 に答える