Android 推特没有';设置WebClient时,无法返回活动

Android 推特没有';设置WebClient时,无法返回活动,android,twitter4j,Android,Twitter4j,我使用Twitter4J连接到Twitter。通过为WebView设置WebViewClient,可以防止通过默认浏览器加载。问题是Twitter不会回到我的活动中。重定向后,它在WebView上显示“网页不可用” 召唤 final RequestToken requestToken = twitter.getOAuthRequestToken(Constant.CALLBACK_URL); twitterSite.loadUrl(requestToken.get

我使用Twitter4J连接到Twitter。通过为WebView设置WebViewClient,可以防止通过默认浏览器加载。问题是Twitter不会回到我的活动中。重定向后,它在WebView上显示“网页不可用”

召唤

        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>

我认为你应该这样使用: 1) ,

2) ,



请测试一下。祝你好运

您的代码很好。只需要进行如下更改

 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;
        }

回答可能有帮助~long..back。。。但是我在写。。。。。这可能会帮助其他人检查webView。canGoBack()返回true或false。基于此,您可以编写代码。嗨,我在设置webView之后返回true,但是。。。有点怪。它返回到当前活动,webView消失。我的意思是这个帐篷不叫!!!即将工作。当另一个活动使用flag Intent启动您的活动时,onNewIntent将调用。flag_Activity_REORDER_to_FRONT。所以,当您使用浏览器时,浏览器会使用Intent.FLAG\u activity\u REORDER\u TO\u FRONT标志启动您的活动。但在webview的情况下,onNewIntent将永远不会调用。因此,在回拨url的条件下,您可以编写代码,在twitter登录后获取访问令牌或任何您需要的内容。
public static final String CALLBACK_URL = "test123://TwitterLoginActivity";
<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>
 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;
        }