Tumblr无法在WebView中正确呈现

时间:2016-02-22 16:50:17

标签: java android webview

您好我正在使用带有嵌入式webview的弹出式对话框在我的应用中测试各种网站的OAuth授权,用户可以登录并授权。适用于twitter和foursquare。但是由于某些原因,Tumblr无法正常渲染。

当我将授权网址放入桌面浏览器时,一切正常。然而,在我的手机上,无论是在手机浏览器上还是在我的应用程序的网页浏览中,我得到的都是标题“tumblr。准备就绪。现在是时候了。按下按钮”加上一个蓝色矩形和一个灰色矩形在其下面我无法与之互动。

我尝试过设置javascript设置(Android webview not rendering html content correctly),打开和关闭硬件加速(Android webview not rendering correctly)或设置存储选项(Problems loading mobile.twitter in webview)。什么都行不通。如果有人有任何想法,将非常感激!

非常感谢, RIZ

编辑:我怀疑这与手机中的Chrome有关,而不是我的代码,因为Chrome本身似乎无法正常呈现Tumblr。

无论如何,这是我正在使用的代码:

public class FragmentOAuthUrlBrowser extends Fragment {
    private static final String REQUEST =     "com.chdryra.android.reviewer.View.ActivitiesFragments.FragmentViewUrlBrowser.url";

    private static final int LAYOUT = R.layout.fragment_review_url_browser;
    private static final int WEB_VIEW = R.id.web_view;

    private OAuthRequest mRequest;

    public static FragmentOAuthUrlBrowser newInstance(OAuthRequest request) {
        return FactoryFragment.newFragment(FragmentOAuthUrlBrowser.class, REQUEST, request);
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle args = getArguments();
        if (args != null) mRequest = args.getParcelable(REQUEST);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View v = inflater.inflate(LAYOUT, container, false);

        WebView webView = (WebView) v.findViewById(WEB_VIEW);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebViewClient(new OAuthWebViewClient());
        webView.loadUrl(mRequest.getAuthorisationUrl());

        return v;
    }

    private class OAuthWebViewClient extends WebViewClient {
        @Override
        public void onPageFinished(WebView view, String url) {
            mRequest.setCallbackResult(view.getUrl());
            super.onPageFinished(view, url);
        }
    }

以下是它的渲染方式: enter image description here

谢谢!

1 个答案:

答案 0 :(得分:1)

我实施了TumblrLogin。不需要使用硬件加速和存储。

使用

启用JavaScript
//Enable JS support on web browser - important since TumblrLogin utilises JS components to show / hide UI
//Login page will not show up properly if this is not done
webView.getSettings().setJavaScriptEnabled(true);

设置新的WebView客户端以捕获重定向。我找到了一个普通的WebViewClient来做这个伎俩。我想ChromeWebViewClient也应该可以找到。

这就是全部。无需其他自定义。希望你指出正确的网址。

<string name="tumblr_request">https://www.tumblr.com/oauth/request_token</string> <string name="tumblr_access">https://www.tumblr.com/oauth/access_token</string> <string name="tumblr_auth">https://www.tumblr.com/oauth/authorize</string>