移动互联网的开发包中有大量的功能是设计到显示网页的,有些甚至是直接调取远程的网页,主要依赖于WebView这个控件,而实际的开发过程中,我们需要在js代码中调用c#里面的代码,或者在c#代码里直接调用相关的js方法,以完成更好的交互效果。
android sdk提供了非常简便的办法来实现这一的功能,而Mono for android也提供了相关的方法,步骤如下:
step1:首先要在创建一个类,这个类是用于与js代码交互的,如下所示
public class Wodubao : Java.Lang.Object
{
Context context;
public Wodubao (Context context)
{
this.context = context;
}
public Wodubao (IntPtr handle, JniHandleOwnership transfer)
: base (handle, transfer)
{
}
[Export ("Article")]
// to become consistent with Java/JS interop convention, the argument cannot be System.String.
public void Article (Java.Lang.String articleid)
{
ArticleActivity currentArticle = (ArticleActivity)context;
currentArticle.Finish ();
Intent intent = new Intent (context, typeof(ArticleActivity));
intent.PutExtra ("articleid", articleid.ToString ());
context.StartActivity (intent);
}
}
说明:Wodubao是一个用于与js代码交互的类,在这个类里定义了一个方法Article ,这个就是js代码里的方法,方法需要一个参数 articleid,这个方法可以调用当前activity里的所有方法,以实现相应的效果。
step2:在初始化WebView的时候注册js方法,代码示例
WebView webView = new WebView (this);
webView.Settings.JavaScriptEnabled = true;
webView.AddJavascriptInterface (new Wodubao (this), "Wodubao");
注意:这里需要将JavaScriptEnabled的属性设置为true。
step3:代码中只要有Article的js方法,调用后就会执行C#代码里的方法,以完成交互效果。