【问题标题】:Tumblr not rendering properly in WebViewTumblr 在 WebView 中无法正确呈现
【发布时间】:2016-02-22 16:50:17
【问题描述】:

您好,我正在使用带有嵌入式 web 视图的弹出对话框在我的应用程序中为各种站点测试 OAuth 授权,用户可以在其中登录和授权。适用于 twitter 和foursquare。然而,由于某种原因,Tumblr 无法正确渲染。

当我将授权 URL 放入桌面浏览器时,一切正常。但是在我的手机上,无论是在手机上的浏览器上还是在我的应用程序的 web 视图中,我得到的只是标题“tumblr。准备好。是时候了。按下按钮”加上一个蓝色矩形和一个灰色矩形我无法与之互动。

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

非常感谢, 里兹

编辑:我怀疑这与手机上的 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);
        }
    }

这是它的渲染方式:

谢谢!

【问题讨论】:

    标签: java android webview


    【解决方案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>

    【讨论】:

    • 谢谢。我启用了 java 脚本,但不幸的是没有帮助。我访问了正确的网页(将 url 复制并粘贴到浏览器中)只是无法正确呈现。
    • 能把你的代码和渲染截图贴出来吗?
    • 我打开和关闭了那个屏幕。我只是让它及时加载,蓝色框变成登录按钮,一切正常。尝试使用Loglr 并检查您是否仍然卡在那个时候。如果你这样做,我认为它与手机和浏览器有关,而不是代码。
    • 谢谢 - 感谢您的帮助和提示
    猜你喜欢
    • 2012-02-04
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    相关资源
    最近更新 更多