javascript - 传递并返回来自 javascript 和 android 的值,并用作手机间隙插件

标签 javascript android parameter-passing phonegap-plugins

我想为手机创建一个插件,它在 javascript 和 android 之间传递和返回值。

有人可以就如何做到这一点提出任何想法吗?

最佳答案

其实这并不难。在这里,我将向您展示如何在页面内从 javascript 调用 native 代码,反之亦然:

从 WebView 中调用 native 代码:
创建 Web View 时添加 javascript 接口(interface)(基本上是 java 类,其方法将在 Web View 中通过 javascript 调用。

JavaScriptInterface jsInterface = new JavaScriptInterface(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.addJavascriptInterface(jsInterface, "JSInterface");

javascript 接口(interface)类本身的定义(这是我从我的另一个答案中获取的示例类,并以 native Intent 打开视频)

public class JavaScriptInterface {
    private Activity activity;

    public JavaScriptInterface(Activity activiy) {
        this.activity = activiy;
    }

    public void startVideo(String videoAddress){
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.parse(videoAddress), "video/3gpp"); // The Mime type can actually be determined from the file
        activity.startActivity(intent);
    }
}

现在,如果您想从页面的 HTML 中调用此代码,请提供以下方法:

<script>
    function playVideo(video){
        window.JSInterface.startVideo(video);
    }
</script>

是不是很简单?

从本地代码调用javascript代码:
这也很简单,假设在 WebView 中加载的 HTML 代码中定义了 javascript 函数:

<script>
    function function(){
        //... do something
    }
</script>

然后你在原生代码中通过 WebView 调用这个函数:

webView.loadUrl("javascript:function()");

关于javascript - 传递并返回来自 javascript 和 android 的值,并用作手机间隙插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8982570/

相关文章:

javascript - ES6 中模块的导入和导出

javascript - react native : how can I extend this timer through an alert?

android - 按钮有什么属性可以让它看起来很时尚吗?

c - 在 C 中优化具有许多输入参数的函数

c# - 启动新进程时如何指定带空格的参数

javascript - JS - 多行字符串

javascript - 在哪里插入这个 JavaScript?

android - 在没有任何静态引用的情况下使用上下文

java - 警报对话框仅模糊部分屏幕

java - "parameterTypes"方法中 "java.lang.Class.getMethod()"的解释和正确格式