Android - Hybrid

WebView调用Activity

方式一

写一个 JavaScriptinterface 类,里面实现WebView向Activity 页面跳转

public class JavaScriptinterface {
    Activity mActivity;
    public JavaScriptinterface(Activity mActivity) {
        this.mActivity = mActivity;
    }

    /** 与js交互时用到的方法,在js里直接调用的 */
    public void startActivity() {
        Intent intent = new Intent();
        intent.putExtra("fromWhich", "webViewUrl");
        intent.putExtra("replyID", "replyID");
        intent.setClass(mActivity, Testactvity.class);
        mActivity.startActivity(intent);
    }
}

而webView 实现 myWebView.addJavascriptInterface(new JavaScriptinterface(this), “android”); 添加 这个类,表情为 android,在相应的网页中链接或按钮添加相应JS

function startActivity() {       
    android.startActivity();   
     }

JavaScriptinterface 的 startActivity 与 JS中的方法必须一致

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><br><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" dir="ltr"><br><head><br><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><br><br><script type="text/javascript">   <br>function startActivity() {       
    android.startActivity();   
     }<br></script><br><br></head><br><body><br><a href="#" id="a1" name="a1" onClick="startActivity()">button</a><br><input type="button" value="Say hello"<br>     onClick="startActivity()"/><br>     <br></body><br><br></html><br>

方式二

通过在 Activity 中 的 scheme 去实现,同时这种方式可对外开发,即别的APP中遵循这个 scheme 规则,即可打开注册scheme 的Activity

<activity
android:name="com.example.webviewtest.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="topicid" />
</intent-filter>
</activity>

在WebView 的主要代码如下 button 超连接和scheme 一直 ,然后通过 Intent 传值可以通过 topicid://aa.bb:80/test?p=12&d=1
字段去截取想要的属性值。 这种方式 不能重写 WebViewClient 方法,不然点击就变为 像这个 topicid://aa.bb:80/test?p=12&d=1 Url 跳转。

方式三

通过重写 WebViewClient ,在 WebViewClient 中 有shouldOverrideUrlLoading(WebView view, String url) 的方法,可以在里面定义 Activity的跳转 ,通过 自定义超链接的Url 格式去进行不同的操作,如:http://www.mofangge.com 为 网页跳转 , blogJump://mofangge.com 链接形式为 向Activity 跳转,通过 url 头部 进行 loadUrl 还是startActivity
的跳转判断。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值