kotlin和h5交互Demo

一 使用anko库方便开发

implementation "org.jetbrains.anko:anko:$anko_version"

二 要加网络权限

 <uses-permission android:name="android.permission.INTERNET"/>

三 加注解@JavascriptInterface

package com.example.user.hellokotlin

import android.content.Context
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.webkit.JavascriptInterface
import android.webkit.WebChromeClient
import android.webkit.WebView
import android.webkit.WebViewClient
import android.widget.Toast
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
    val mWebView by lazy{
        wv_WebView
    }
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        mWebView.settings.javaScriptEnabled=true;
        mWebView.webViewClient=MyWebViewClient();
        mWebView.webChromeClient=MyWebChromeClient();
        mWebView.loadUrl("http://192.25.102.167:8080/main.html")
        mWebView.addJavascriptInterface(JsInterface(this),"jsInterface")
    }
}
class JsInterface{
    var mContext:Context?=null;
    constructor(context: Context){
        this.mContext=context;
    }

    @JavascriptInterface
    fun showToast(json: String): Unit {
        Toast.makeText(mContext,json,Toast.LENGTH_SHORT).show();
    }
}
class MyWebViewClient:WebViewClient(){
    override fun onPageFinished(view: WebView?, url: String?) {
        super.onPageFinished(view, url)
    }
}
class MyWebChromeClient:WebChromeClient(){
    override fun onProgressChanged(view: WebView?, newProgress: Int) {
        super.onProgressChanged(view, newProgress)
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于 Kotlin 协程的 TCP Demo。它使用 Kotlin 协程中提供的 `Socket`、`ServerSocket` 等类来完成 TCP 通信。 1. 客户端: ```kotlin import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import java.io.BufferedReader import java.io.InputStreamReader import java.io.PrintWriter import java.net.Socket fun main() = runBlocking { val socket = Socket("localhost", 12345) val reader = BufferedReader(InputStreamReader(socket.getInputStream())) val writer = PrintWriter(socket.getOutputStream(), true) GlobalScope.launch(Dispatchers.IO) { while (true) { val line = reader.readLine() println("Server: $line") } } while (true) { val input = readLine() ?: break writer.println(input) } } ``` 2. 服务端: ```kotlin import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import kotlinx.coroutines.runBlocking import java.io.BufferedReader import java.io.InputStreamReader import java.io.PrintWriter import java.net.ServerSocket fun main() = runBlocking { val serverSocket = ServerSocket(12345) while (true) { val socket = serverSocket.accept() val reader = BufferedReader(InputStreamReader(socket.getInputStream())) val writer = PrintWriter(socket.getOutputStream(), true) GlobalScope.launch(Dispatchers.IO) { while (true) { val line = reader.readLine() println("Client: $line") writer.println("You said: $line") } } } } ``` 在运行客户端和服务端之后,可以在客户端输入消息并发送到服务端,服务端会将消息回显给客户端。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值