android - 由于 'X-Frame-Options' 设置为 'SAMEORIGIN',因此链接在 WebView 中不起作用

标签 android twitter webview

我在 WebView 中有一个 Twitter 时间轴,它显示得非常好。我关注了this post作为指南。目前我不想接受其他选项,例如 Twitter4J,尽管我很欣赏它是一个很好的选择。

我的问题是我无法单击任何链接、图片,或者除了上下滚动之外无法与时间轴进行其他交互。我收到以下错误。有什么办法解决这个问题吗?

05-29 19:09:10.887: I/chromium(13226): [INFO:CONSOLE(0)] "Refused to display 'https://mobile.twitter.com/XXXXXXXX/status/YYYYYYYYYY/photo/1' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.", source: https://twitter.com/XXXXXXXX/status/YYYYYYYYYY/photo/1 (0)

这是我的代码:

// Locate the WebView in fragment_twitter.xml
    WebView tweetWebView = (WebView) V.findViewById(R.id.tweetWebView);

    // Settings for the WebView
    tweetWebView.setBackgroundColor(0);
    tweetWebView.getSettings().setJavaScriptEnabled(true);
    tweetWebView.getSettings().setDomStorageEnabled(true);

    // Load the WebView with the imageURL
    String timelineWidget = "<a class=\"twitter-timeline\" data-dnt=\"true\" href=\"https://twitter.com/XXXXXXXX\"  data-widget-id=\"SECRETNUMBER\">Tweets by @XXXXXXXX</a><script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.async=true;js.src=p+\"://platform.twitter.com/widgets.js\";fjs.parentNode.insertBefore(js,fjs);}}(document,\"script\",\"twitter-wjs\");</script>";                   
    tweetWebView.loadDataWithBaseURL("https://twitter.com", timelineWidget, "text/html", "UTF-8", null);

最佳答案

我的问题和上面一样,但是要求不同,是在嵌入式webview中打开链接,然后在 native 浏览器中打开webview内部链接,

mWebView.setWebViewClient(new WebViewClient() {

    @Override
    public WebResourceResponse shouldInterceptRequest(WebView view, String url) {

        Logger.logD(TAG, "URL = " + url);
        if(mWebView.getVisibility() == View.VISIBLE && !HomeActivity.isPaused()) {
        //Open url in native browser
            Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(i);
            return null;
        }
        return super.shouldInterceptRequest(view, url);
    }


    @Override
    public void onPageFinished(WebView view, String url) {
       //show embedded webview and hide the progress bar
        mWebView.setVisibility(View.VISIBLE);
        mProgressBar.setVisibility(View.GONE);
        super.onPageFinished(view, url);
    }

});

在您的 Activity 中添加 bool 值

@Override
protected void onResume() {
    super.onResume();
    isPaused  = false;
}

@Override
protected void onPause() {
    super.onPause();
    isPaused = true;
}

我希望一些更改可以引导您找到解决方案,谢谢

关于android - 由于 'X-Frame-Options' 设置为 'SAMEORIGIN',因此链接在 WebView 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23940590/

相关文章:

PHP:Facebook/Twitter 集成

android - 在 Android 的视频启动画面期间预加载 WebView

ios - Twitter 屏幕名称在 Parse 中返回 null

android - 具有水平 RecycleView 的 ListView 获得锁定

android - 将列中的所有行更新为新值

java - 在 libgdx 中截图

ios - 在登录成功时运行函数 MGTwitterEngine ala FBConnect

google-chrome - 用DART编写的Chrome打包应用程序:如何启用Webview标记下载文件

android WebView 去浏览器

java - 编辑Maven编译的存储库源代码