2

我正在尝试使用 where2getit 创建概念验证,并且我有以下 Wafflehouse 的示例 URL

http://hosted.where2getit.com/wafflehouse/indexnew.html

当我在三种不同的设备模式下查看时:

  1. 桌面浏览器(经过 Safari 或 Chrome 测试)
  2. Android 移动浏览器(运行 Jelly Bean 的 Azpen/Acer 迷你平板电脑)
    • 注意重定向到移动......
  3. WebView 中的 Android Native App 作为 URL 或数据;仅限 URL,带 src 的 iFrame

我得到的图像如下:

1.在此处输入图像描述

2.在此处输入图像描述

3.在此处输入图像描述

HomeActivity 中的代码是:

    public class HomeActivity extends Activity {

    private static final String TAG = "HomeActivity";
    private static final String URL_LOADING = "http://mobile.where2getit.com/wafflehouse/indexnew.html";
    private static final String HTML_BODY = "<html>" + "<body>"
            + "<iframe id='content' src='http://hosted.where2getit.com/wafflehouse/indexnew.html' margin='5%' width='80%' height='80%'/>"
            + "</body>" + "</html>";
    private static final String MIME_TYPE = "text/html";
    private static final String ENCODING = "utf-8";
    private WebView mWebView;
    private MdWebChromeClient chromeClient;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        
        mWebView = (WebView) findViewById(R.id.webWhere2GetItIFrame);

        chromeClient = new MdWebChromeClient();
        mWebView.setWebChromeClient(chromeClient);
        mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
        mWebView.getSettings().setAppCacheEnabled(false);
        mWebView.clearCache(true);
        mWebView.getSettings().setBuiltInZoomControls(true);
        mWebView.getSettings().setJavaScriptEnabled(true);
        // mWebView.addJavascriptInterface(new MdJsObject(), "injectedObject");
        mWebView.loadDataWithBaseURL("http://hosted.where2getit.com", HTML_BODY, MIME_TYPE, ENCODING, "");
        // mWebView.loadUrl(URL_LOADING);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.home, menu);
        return true;
    }

    final class ClickOnCallbackScript {

        private View mHandler;

        ClickOnCallbackScript() {
        }

        public void clickOnAndroid() {
            mHandler.post(new Runnable() {

                public void run() {
                    Log.d(TAG, "\t\tC L I C K . . .");
                    // mWebView.loadUrl("http://www.mobidawg.mobi/m/products/wethepeople/index.html");
                }
            });
        }

    }

}

结语

我认为问题可能与在 WebView 中正确使用 IFRAME 有关;或我不知道如何检测和处理的回调。我也相信解决方案很简单,其他人已经解决了。

如果你能提供一些想法供讨论,那么答案很可能会出现。

4

1 回答 1

0

我可以肯定地告诉你,你的前两个例子是不同的,因为操作系统向网站展示自己的方式,以及网站如何被编码以识别和回复基于桌面的 Web 客户端与基于移动的客户端。如果您查看您的 android OS 网络浏览器图片,您会注意到您的 URL 更改为以“mobile.”开头。这证明您的 Android 操作系统 Web 浏览器将自己呈现为移动客户端。

至于您编写的自定义应用程序,它可能归结为许可。有没有加

<uses-permission android:name="android.permission.INTERNET" />

你的权限?

我也不确定在您的特定用例中是否需要使用 WebChromeClient。

还在堆栈溢出中发现了这一点,用于从自定义应用程序中更改 Web 客户端的“用户代理”,以便它可以查看站点的桌面版本。

将 WebView 设置为查看桌面站点而不是移动站点

于 2014-02-18T17:17:56.230 回答