我想通过使用javascript调用phonegap中的自定义方法,我该如何调用

时间:2014-06-04 06:16:14

标签: cordova

//我是新的phonegap应用程序,我想在mainActivity中实现一个方法,我想在javascript中使用这个方法,我怎样才能在javascript中调用这个方法。

public class MainActivity extends CordovaActivity 
{
    private HelloPlugin mc;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        super.init();


        super.loadUrl(Config.getStartUrl());
      //  super.loadUrl("file:///assets/www/index.html");

    }
    public void customFunctionCalled() {
        Log.e("Custom Function Called", "Custom Function Called");
        Toast.makeText(getApplicationContext(), "asas", 1000).show();
    }
}

//html with javascript code:
<!DOCTYPE html>
<html>

<body>
<script type="text/javascript">
    function callNewActivity() {
        window.MainActivity.customFunctionCalled();
    }
</script>
<p>This is my first app.</p>
<button class="btn" onclick="callNewActivity()" type="submit">Button</button>
</body>

</html>

2 个答案:

答案 0 :(得分:1)

有两种方式:

1.- kathir提出的方式,它是最简单的&#34;如果你不想搞乱mainActivity的话。只需创建一个phonegap插件并将java函数放在其上。

2.-由于您已经在使用mainActivity,因此可以使用允许您从javascript调用执行java的javascriptInterface。例如:

在你的mainActivity.java onCreate方法中输入:

yourCordovaWebview.addJavascriptInterface(this, "yourJavascriptIntearfaceName");

那么你想从javascript执行的方法应该有一个@JavascriptInterface。例如:

@JavascriptInterface
public void yourJavaMethod(){
    //Do somethig here        
}

这就是全部,现在你只需要像这样调用java函数:

window.yourJavascriptIntearfaceName.yourJavaMethod();

答案 1 :(得分:0)

嘿,它不可能在phonegap javascript中无法直接调用java方法。所以如果你想在java中写任何东西意味着你应该只使用 cordova插件 ...

Reference 1

Reference 2

Reference 3