gpt4 book ai didi

android - 使用 Phonegap 3.0 从 js 调用 Activity 方法的最佳方式

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:32:54 24 4
gpt4 key购买 nike

我正在尝试使用 MainActivity 中的 native 方法从 phonegap 中的 index.html 调用电话。

我正在使用 phonegap 3.0 和 android 4.3 平台。我尝试了 second answerthis发布,但不适用于此版本。

我想知道解决这个问题的最佳方法是什么?

最佳答案

您可以创建自定义插件以从 native 端调用任何方法。创建一个单独的 JavaScript 文件,例如 customplugin.js,并将其放入其中:

var CustomPlugin = {};

CustomPlugin.callNativeMethod = function() {
cordova.exec(null, null, "CustomPlugin", "callNativeMethod", []);
};

现在在 native Java 端,创建一个新类并将其命名为 CustomPlugin.java,然后添加:

package com.yourpackage;

import org.apache.cordova.CordovaWebView;
import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.api.CordovaInterface;
import org.apache.cordova.api.CordovaPlugin;

import com.yourpackage.MainActivity;

public class CustomPlugin extends CordovaPlugin
{
private static final String TAG = "CustomPlugin";

private CallbackContext callbackContext = null;
private MainActivity activity = null;

/**
* Override the plugin initialise method and set the Activity as an
* instance variable.
*/
@Override
public void initialize(CordovaInterface cordova, CordovaWebView webView)
{
super.initialize(cordova, webView);

// Set the Activity.
this.activity = (MainActivity) cordova.getActivity();
}

/**
* Here you can delegate any JavaScript methods. The "action" argument will contain the
* name of the delegated method and the "args" will contain any arguments passed from the
* JavaScript method.
*/
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException
{
this.callbackContext = callbackContext;

Log.d(TAG, callbackContext.getCallbackId() + ": " + action);

if (action.equals("callNativeMethod"))
{
this.callNativeMethod();
}
else
{
return false;
}

return true;
}

private void callNativeMethod()
{
// Here we simply call the method from the Activity.
this.activity.callActivityMethod();
}
}

确保通过添加以下行在 config.xml 文件中映射插件:

...
<feature name="CustomPlugin">
<param name="android-package" value="com.yourpackage.CustomPlugin" />
</feature>
...

现在要从 index.html 调用插件,您只需调用 JavaScript 方法即可:

CustomPlugin.callNativeMethod();

使用此方法可以方便地设置许多自定义方法。有关详细信息,请查看 PhoneGap 插件开发指南 here .

关于android - 使用 Phonegap 3.0 从 js 调用 Activity 方法的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18606595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com