欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android嵌入Udesk即时通讯网页插件(一、入门)

程序员文章站 2022-07-13 14:52:27
...

作者:张振琦

Android 系统上实现Udesk即时通讯,除了使用Udesk提供的原生sdk以外还可以嵌入Udesk提供的即时通讯网页插件。Udesk即时通讯网页插件的内容,大家可以参考《Udesk即时通讯(IM)网页插件入门》 的内容。

如果业务需要同时使用网页即时通讯与移动端即时通讯,Android 嵌入desk即时通讯网页插件有一个很大的优点就是,相对于使用移动SDK单独实现移动端即时通讯,嵌入网页插件可以减少一定的维护成本,只需要维护即时通讯网页插件即可。

Udesk即时通讯网页插件除了使用代码还提供了一个专用连接,Android 嵌入Udesk即时通讯网页插件的核心思路就是,使用Android 的 WebView 打开这个专用连接。下面直接演示如果实现。

新建一个Project,选择Empty Activity,名称为UseWebIM,开发语言Java。

Android嵌入Udesk即时通讯网页插件(一、入门)
Android嵌入Udesk即时通讯网页插件(一、入门)
删除主页面中默认的Hello World! 文本,添加一个按钮,名为”打开WebIM联系客服“

activity_mian.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn_webim"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/webim"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

strings.xml

<resources>
    <string name="app_name">UseWebIM</string>
    <string name="webim">打开WebIM联系客服</string>
</resources>

在包名处点击鼠标右键,添加一个空的Activity,名称为WebIMActivity,语言Java
Android嵌入Udesk即时通讯网页插件(一、入门)
Android嵌入Udesk即时通讯网页插件(一、入门)
给新建的WebIMActivity页面中添加WebView控件
activity_web_i_m.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".WebIM">

    <WebView
        android:id="@+id/wv_webim"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:layout_editor_absoluteX="0dp"
        tools:layout_editor_absoluteY="0dp" />

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity中给按钮添加点击事件,并实现跳转到WebIMActivity中
MainActivity.java

package com.example.usewebim;

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn = findViewById(R.id.btn_webim);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this, WebIMActivity.class);
                startActivity(intent);
            }
        });
    }
}

WebIMActivity中,获取WebView控件并设置参数,打开我们的Udesk即时通讯网页插件的专用链接。
WebIMActivity.java

package com.example.usewebim;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebIMActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_i_m);

        WebView webView = (WebView) findViewById(R.id.wv_webim);

        WebSettings mWebSettings = webView.getSettings();
        mWebSettings.setJavaScriptCanOpenWindowsAutomatically(true);//设置js可以直接打开窗口,如window.open(),默认为false
        mWebSettings.setJavaScriptEnabled(true);//是否允许JavaScript脚本运行,默认为false。设置true时,会提醒可能造成XSS漏洞
        mWebSettings.setUseWideViewPort(true);//设置此属性,可任意比例缩放。大视图模式
        mWebSettings.setLoadWithOverviewMode(true);//和setUseWideViewPort(true)一起解决网页自适应问题
        mWebSettings.setAppCacheEnabled(true);//是否使用缓存
        mWebSettings.setDomStorageEnabled(true);//开启本地DOM存储
        mWebSettings.setLoadsImagesAutomatically(true); // 加载图片

        //覆盖WebView默认使用第三方或系统默认浏览器打开网页的行为
        webView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }

        });

        webView.loadUrl("你的Udesk即时通讯网页插件专用链接");
    }
}

在AndroidManifest.xml中添加权限

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

至此代码就完成了,运行看下效果。
Android嵌入Udesk即时通讯网页插件(一、入门)
点击按钮
Android嵌入Udesk即时通讯网页插件(一、入门)
功能顺利完成。除了发送文字内容,也会有需要发送照片的业务需求,后续会介绍。

相关标签: Udesk即时通讯