您的位置:首页 > 移动开发 > Android开发

web端通过javascript调用android方法打开新的页面

2015-11-04 14:32 579 查看
android端写一个类,提供一个方法gotoPage给web端js调用

public class JsInterface {

public static final String AndroidApi = "AndroidApi";
/**
* volatile 关键词确保当uniqueInstance变量被初始化成Singleton实例时,多个线程正确地处理uniqueInstance变量
*/
private volatile static JsInterface uniqueInstance;
private Context mContext;

private JsInterface(Context context) {
mContext = context;
}

public static JsInterface getInstance(Context context) {
if (uniqueInstance == null) {
synchronized (JsInterface.class) {
if (uniqueInstance == null) {
uniqueInstance = new JsInterface(context);
}
}
}
return uniqueInstance;
}

@JavascriptInterface
@SuppressWarnings("unused")
public void gotoPage(String pagename, String param) {
Logger.e("param :" + param);
Logger.e("pagename :" + pagename);
Logger.e("before");
if (JsonParser.isJSONValid(param)) {
if (pagename.equals("detail")) {
try {
JSONObject json = new JSONObject(param);
String link = json.optString("Link");
String id = json.optString("ID");
String brandID = json.optString("BrandID");
String sourceMall = json.optString("SourceMall");
ActivityUtil.switchToChaoGaoFanProductActivity(mContext, link, sourceMall, id, brandID);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
}


2. 在webview中调用addJavascriptInterface方法注入接口

JsInterface jsInterface = JsInterface.getInstance(this);
//addJavascriptInterface是Android提供的方法,包含两个参数。第一个是java中实现的类,类提供了javascript访问方法;第二个参数是java类映射到javascript的对象名。例如:js中widow.AndroidApi就代表android中JsInterface类,可以调用JsInterface中的方法,但是参数类型和个数要一致
mWebView.addJavascriptInterface(jsInterface,jsInterface.AndroidApi);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: