09
4

Mono for android中js与c#代码的交互

0
归档:2013年4月分类:开源Mono
内容纲要

移动互联网的开发包中有大量的功能是设计到显示网页的,有些甚至是直接调取远程的网页,主要依赖于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#代码里的方法,以完成交互效果。


声明: 本文采用 BY-NC-SA 协议进行授权. 未标注“转”的文章均为原创,转载请注明转自: Mono for android中js与c#代码的交互

公告栏

欢迎大家来到我的博客,我是dodoro,希望我的博客能给你带来帮助。