Android SDK WebView调用Activity

时间:2011-01-30 23:27:57

标签: android webview

我正在尝试在单击WebView组件内的链接时启动Activity。

我的网页浏览已加载到Main.java内,我想在点击SubActivity.java中的网站内的链接时启动Main.java

另外,如何将参数传递给此活动?

示例inspection://Project/1

“检查”是我的应用程序的名称,inspection是我要启动的活动,1是我想要的ID。

3 个答案:

答案 0 :(得分:12)

您可以使用WebView的addJavaScriptInterface来允许JavaScript控制您的应用程序(在这种情况下,允许JavaScript在单击链接时触发Intent)。

要执行此操作,您需要传递一个类实例以绑定到JavaScript,这可能类似于以下内容:

private final class JsInterface {
      public void launchIntent(final String payload) {
         Activity.this.runOnUiThread(new Runnable() {
            @Override
            public void run() {
               // use the payload if you want, attach as an extra, switch destination, etc.
               Activity.this.startActivity(new Intent(Activity.this, SomeOtherActivity.class));
            }
         });
      }
   }

然后使用以下内容添加到WebView:

webView.addJavascriptInterface(js, "Android");

然后在WebView的JavaScript中,您只需使用新的“Android”对象的“launchIntent”方法。

答案 1 :(得分:0)

一种选择是覆盖网络视图的网址加载,然后选择要启动新活动的点击。在docs中查看子类WebViewClient的使用:

http://developer.android.com/resources/tutorials/views/hello-webview.html

另一种选择是将您的活动绑定到自定义URL方案。这在客户端OAuth中很常见,通常是通过浏览器而不是WebView,但它应该足够相似。这里有一个完整的例子:

https://github.com/brione/Brion-Learns-OAuth

其中展示了如何绑定url方案处理程序以及处理通过它生成的Intent启动(参见OAUTH.java中的onResume())。

答案 2 :(得分:0)

首先在您的网页上添加javascript方法按钮onclick() 下面定义的函数..

function showAndroidToast(toast) {
    AndroidFunction.showToast(toast);
}

Android代码适用于javascript界面​​..

public class MyJavaScriptInterface {
    Context mContext;
     private Activity activity;

        public MyJavaScriptInterface(Activity activiy) {
            this.activity = activiy;
        }
 @JavascriptInterface
    public void showToast(String toast){
  Intent i=new Intent(getApplicationContext(), Subactivity.class);

  i.putExtra("data", "tosecondActivity");
 startActivity(i);

}