jquery mobile和phonegap addJavascriptInterface

时间:2012-11-26 00:17:21

标签: android cordova jquery-mobile

我正在开发一个带有jQuery Mobile和PhoneGap的Android应用程序。这是我的活动:

public class xxx extends DroidGap {
  /** Called when the activity is first created. */
  private String FILENAME = "";
  private static final String HTML_ROOT = "file:///android_asset/www/";
  private Handler handler = null;
  private static WebView webView = null;
  public MyTeam team = null;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.init();
    handler = new Handler();
    FILENAME = getString(R.string.fileName);
    //parsing data from file
    String json = readFile();
    team = parseJson(json);
    appView.addJavascriptInterface(this, "MyTeam");
    super.loadUrl("file:///android_asset/www/menu.html");
  }
  public String HW(){
    return team.getTeamName();
  }

这是我在menu.html中的Javascript代码:

$(document).ready(function(){
  alert(MyTeam.HW()); // work perfectly
  alert("name "+MyTeam.team.getTeamName()); //doesn't work!
});

所以问题是:

  • 我可以访问返回team.getTeamName();
  • 的HW函数
  • 我无法访问活动中的团队变量名称,因为MyTeam.team.getTeamName()不起作用。

似乎我只能访问函数而不能直接访问公共变量。

我做错了什么?

感谢。

1 个答案:

答案 0 :(得分:2)

您无法直接访问Java对象字段。它就在addJavaScriptInterface的文档中。此外,如果您正在使用PhoneGap,那么您应该write a plugin并让我们担心addJavaScriptInterface崩溃的情况。