700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 腾讯---即时通讯im--在聊天消息打开文件的解决方案

腾讯---即时通讯im--在聊天消息打开文件的解决方案

时间:2020-03-13 04:15:56

相关推荐

腾讯---即时通讯im--在聊天消息打开文件的解决方案

即时通讯--腾讯im聊天消息中打开文件的解决办法

前言一、如何解决打开文件?二、使用步骤1.引入腾讯im2.腾讯im--文件处理类3.腾讯im--文件处理方式方法一:新建activity+腾讯x5内核,直接打开;步骤一:intent跳转,其中,FileViewActivity为目标活动。步骤二:解析出文件路径并采用腾讯x5打开文件总结:缺点显而易见。因为,他是重新打开了一个activity。当你打开文件后,返回主界面时,活动布局不存在控件时空白,页面不美观,所以,我采取了这样的布局: 解决方式二·:调用第三方;步骤一:获取文件在线路径步骤二:本app调用第三方app总结:优点显而易见。缺点:结合软件使用面向对象以及公司本身的实际需求。 解决方式三:这是我初步的想法,直接在MessagefileHolder类中点击,然后调用第一种方法,但是,始终无法正确获取到content报错。因为,该类不是一个activity。所以,如果那个仁兄解决,可以相互探讨下;

前言

android解决在应用中打开文件是一个重要的问题;尤其是引入第三方控件时,容易使刚接触的人找不到问题的解决思路;


一、如何解决打开文件?

目前解决问题的方案是:1.跳转第三方软件打开;2.直接打开

二、使用步骤

1.引入腾讯im

不建议以"gradle 接入集成",而是采用"module 源码集成",这样有利于后期的拓展,采取以修改源码的方式来实现

2.腾讯im–文件处理类

腾讯im处理文件时,只会弹窗告知你文件的具体位置,不会直接打开文件。其中文件处理类位于"modules.chat.layout.message.holder"包下,类名为"MessageFileHolder";在腾讯im--MessageFileHolder处理逻辑: 第一种:本地文件;位于第一个msgContentFrame.setOnClickListener方法下; 第二种:网络文件;位于第二个msgContentFrame.setOnClickListener方法下;;

3.腾讯im–文件处理方式

方法一:新建activity+腾讯x5内核,直接打开;

步骤一:intent跳转,其中,FileViewActivity为目标活动。

Intent intent = new Intent(TUIKit.getAppContext(), FileViewActivity.class);intent.addFlags(FLAG_ACTIVITY_NEW_TASK);intent.putExtra("filepath", path);intent.putExtra("fileSize", size);intent.putExtra("fileName", fileName);TUIKit.getAppContext().startActivity(intent);

步骤二:解析出文件路径并采用腾讯x5打开文件

String path = getIntent().getStringExtra("filepath");private void dispalyFile(String path,) {HashMap<String, String> params = new HashMap<>();try {QbSdk.openFileReader(this, path, params, new ValueCallback<String>() {@Overridepublic void onReceiveValue(String s) {}});} catch (Exception e) {}}

总结:缺点显而易见。因为,他是重新打开了一个activity。当你打开文件后,返回主界面时,活动布局不存在控件时空白,页面不美观,所以,我采取了这样的布局:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".component.file.FileViewActivity"><RelativeLayoutandroid:id="@+id/file_view_back"android:layout_width="wrap_content"android:layout_height="45dp"android:paddingLeft="16dp"android:paddingRight="30dp"tools:ignore="MissingConstraints"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:clickable="false"android:src="@drawable/title_bar_back" /></RelativeLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginTop="45dp"android:orientation="vertical"><TextViewandroid:id="@+id/zidingyi_file_name"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="10dp"android:text="文件名称:测试用例" /><TextViewandroid:id="@+id/zidingyi_file_size"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="10dp"android:text="文件大小:352kb" /><TextViewandroid:id="@+id/zidingyi_file_path"android:layout_width="match_parent"android:layout_height="wrap_content"android:padding="10dp"android:text="文件存储路径:/sss/sss/sss/ss" /></LinearLayout></androidx.constraintlayout.widget.ConstraintLayout>


解决方式二·:调用第三方;

步骤一:获取文件在线路径

fileElem.getUrl(new V2TIMValueCallback<String>() {@Overridepublic void onError(int code, String desc) {}@Overridepublic void onSuccess(String s) {fileUrl = s;}});

步骤二:本app调用第三方app

解决判断当前手机是否安装有wps。没有则提示,有跳转;

msgContentFrame.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = TUIKit.getAppContext().getPackageManager().getLaunchIntentForPackage("cn.wps.moffice_eng");if (intent == null) {ToastUtil.toastLongMessage("为了你的便捷办公,建议您下载wps!");} else {Bundle bundle = new Bundle();//传入文档的在线地址,免除下载的步骤,也不需要判断安卓版本号intent.setData(Uri.parse(fileUrl));intent.putExtras(bundle);TUIKit.getAppContext().startActivity(intent);}}});

总结:优点显而易见。缺点:结合软件使用面向对象以及公司本身的实际需求。


解决方式三:这是我初步的想法,直接在MessagefileHolder类中点击,然后调用第一种方法,但是,始终无法正确获取到content报错。因为,该类不是一个activity。所以,如果那个仁兄解决,可以相互探讨下;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。