2011-05-31 107 views
1

当我在我的WebView按下ebay.com使用此代码按钮:按钮的可能的WebView OnCreateWindow使弹出窗口(对话框样式)?像Android浏览器

HTML:

input id="addPicturesBtn" name="addPicturesBtn" type="button" value="Add pictures" class="button" onclick="ebay.run(this.id,'onclick');return false;" onkeydown="ebay.run(this.id,'onkeydown');return false;" title="Add pictures" 

如果这个按钮被按下我的web视图里面,它会发送新从我的webview到android浏览器的窗口。但是,如果从android浏览器内按下相同的按钮,它会弹出这个很酷的对话框类型弹出窗口(见图片)

我想打开eBay上的弹出式窗口,就像浏览器一样,如果按下这个按钮在我的webview中。这样当用户完成弹出窗口时,用户可以关闭它,将它们返回到我的应用程序后面。

这可能吗?

这是我到目前为止有:

webChromeClient = new WebChromeClient() { 
    @Override 
    public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) { 
     WebView childView = new WebView(Ebay.this); 
     final WebSettings settings = childView.getSettings(); 
     settings.setJavaScriptEnabled(true); 
     childView.setWebChromeClient(this); 
     childView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
     WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj; 
     transport.setWebView(childView); 
     resultMsg.sendToTarget(); 

    return true; 
    } 
     @Override 
     public boolean onJsAlert(WebView view, String url, String message, JsResult result) { 
      new AlertDialog.Builder(view.getContext()).setMessage(message).setCancelable(true).show(); 
      result.confirm(); 
      return true; 

     } 

我这么想吗?

下面是Android浏览器弹出的照片(我试图让我的web视图从上ebay.com按钮启动):

popup

+0

你用自己的方法得到了多少?我目前尝试同样的事情。你现在的答案有点小,因为他们认为它是你自己的网站(eBay不是)。 – Nappy 2011-07-12 14:34:29

回答

2

使用JavaScript接口。结合JavaScript和Java和使自定义对话框中的java 起初,启用JavaScript

webview.getSettings().setJavaScriptEnabled(true); 

在第二,你需要添加JavaScript接口

wv.addJavascriptInterface(new DemoJavaScriptInterface(), "js"); 

第三,负载网址;

webview.loadUrl("javascript:[javascript function name here]()"); 

这是给你一些代码,希望这能帮助 https://github.com/scottagarman/Android-JavaScript-Interface-Example

代码信用转至所谓的“scottagarman”的开发商。

2

你可以做他的方式:

public void onCreate(Bundle savedInstanceState){ 
    .... 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.addJavascriptInterface(new MyJSInterface(), "myappname"); 
    webView.loadUrl("http://mysite.com/"); // or some local asset 
    .... 
} 

public class MyJSInterface{ 

.... 
public void popup(){ 

// AlterDialog etc. 

} 
.... 

} 


HTML from your website: 

window.onload = function(){ 
    window.myappname.popup(); 
} 

我希望这将是对您有用...

顺便说一句,小心用2.3版本,它有一个相应的bug,只是FYI ))

相关问题