Android调用Vue中的JavaScript代码

Android调用Vue中的JavaScript代码

首先,在 Vue 应用中,使用以下代码将数据传递给 Android 应用:

// 在 Vue 应用中将数据传递给 Android 应用
var data = "Hello from Vue!"
window.Android.showToast(data)

然后,在 Kotlin 的 Android 应用中,创建一个 JavaScript 接口类并添加方法来接收这个值:

kotlin

import android.annotation.SuppressLint
import android.os.Bundle
import android.webkit.JavascriptInterface
import android.webkit.WebSettings
import android.webkit.WebView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    private lateinit var webView: WebView

    @SuppressLint("SetJavaScriptEnabled")
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        webView = findViewById(R.id.webview)
        val webSettings: WebSettings = webView.settings
        webSettings.javaScriptEnabled = true // 启用 JavaScript

        // 加载 Vue 应用的网页
        webView.loadUrl("file:///android_asset/vueapp/index.html")

        // 设置 JavaScript 接口
        webView.addJavascriptInterface(JavaScriptInterface(), "Android")
    }

    // 定义 JavaScript 接口
    inner class JavaScriptInterface {
        @JavascriptInterface
        fun showToast(message: String) {
            // 在 Android 应用中显示从 Vue 应用传递过来的值
            Toast.makeText(this@MainActivity, message, Toast.LENGTH_SHORT).show()
        }
    }
}

在上述 Kotlin 代码中,通过 window.Android.showToast(data) 方法将数据传递给 Android 应用,并在 JavaScriptInterface 接口的 showToast 方法中接收到数据后,通过 Toast 显示这个值。

这样,当 Vue 应用中调用 window.Android.showToast(data) 时,Android 应用就会显示从 Vue 应用传递过来的值。

Vue和android交互通信

  1. Vue调用Android方法:

如果你想在Vue中调用Android的函数,你可以使用以下步骤:
在Android中创建一个Java方法,该方法将在Vue中被调用。
使用WebView或其他适当的方式将Vue应用程序嵌入到Android应用程序中。
在Vue中使用JavaScript代码调用Android方法。

  1. Android调用Vue中的JavaScript代码:

如果你想在Android中调用Vue中的JavaScript代码,你可以考虑以下方法:
使用WebView的addJavascriptInterface方法将Android对象暴露给Vue中的JavaScript代码。
在Vue中编写JavaScript代码,以便它可以调用Android对象的方法。

  1. Capacitor混合开发:

Capacitor是一个开源的跨平台框架,允许你使用JavaScript、HTML和CSS创建iOS、Android和Web应用程序1。

传递json对象

首先,在Vue应用中,可以使用window.Android.getData(data)方法将数据传递给Android应用:

// 在Vue应用中将数据传递给Android应用
var data = {name: 'John', age: 25};
window.Android.getData(JSON.stringify(data));

然后,在Android应用的Activity中,通过JavaScript接口接收数据:

import android.os.Bundle
import android.util.Log
import android.webkit.JavascriptInterface
import android.webkit.WebSettings
import android.webkit.WebView
import androidx.appcompat.app.AppCompatActivity
import org.json.JSONObject

class MainActivity : AppCompatActivity() {
    companion object {
        private const val TAG = "MainActivity"
    }

    private lateinit var webView: WebView

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        webView = findViewById(R.id.webview)
        val webSettings: WebSettings = webView.settings
        webSettings.javaScriptEnabled = true // 启用JavaScript

        // 加载Vue应用的网页
        webView.loadUrl("file:///android_asset/vueapp/index.html")

        // 设置JavaScript接口
        webView.addJavascriptInterface(JavaScriptInterface(), "Android")
    }

    // 定义JavaScript接口
    inner class JavaScriptInterface {
        @JavascriptInterface
        fun getData(dataJson: String) {
            val jsonObject = JSONObject(dataJson)

            val name = jsonObject.getString("name")
            val age = jsonObject.getInt("age")
            
            Toast.makeText(this@MainActivity, name, Toast.LENGTH_SHORT).show()
            Toast.makeText(this@MainActivity, age.toString(), Toast.LENGTH_SHORT).show()
        }
    }

    // 定义数据类
    data class Data(val name: String, val age: Int)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android StudioVue项目交互,您可以使用WebView来加载Vue项目,并通过WebView与Android原生代码进行交互。 以下是一些步骤: 1. 在Android Studio创建一个新的Android项目。 2. 在app/build.gradle文件,添加WebView的依赖: ```groovy implementation 'androidx.webkit:webkit:1.4.0' ``` 3. 在您的布局文件,添加一个WebView: ```xml <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 4. 在您的Activity,初始化WebView并加载Vue项目: ```java WebView webView = findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); webView.loadUrl("file:///android_asset/vue_project/index.html"); ``` 这里的"vue_project"是您Vue项目的文件夹名字,确保它在Android项目的assets目录下。 5. 在Vue项目,您可以使用Vue的内置方法通过WebView与Android原生代码进行通信。例如,您可以使用JavaScript与Java代码交互: ```javascript // 在Vue调用Android方法 window.AndroidInterface.showToast('Hello from Vue'); // 在Java定义供Vue调用的方法 public class AndroidInterface { @JavascriptInterface public void showToast(String message) { Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show(); } } ``` 请注意,要使此方法生效,您需要为WebView启用JavaScript,并将AndroidInterface类添加为JavaScript接口: ```java webView.getSettings().setJavaScriptEnabled(true); webView.addJavascriptInterface(new AndroidInterface(), "AndroidInterface"); ``` 这样,您就可以在Android Studio加载Vue项目,并使用WebView进行AndroidVue项目的交互了。请注意,这只是其一种实现方式,您可以根据您的需求和项目结构进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值