前言
微信分享是一个很重要的社交功能,uniapp封装了uni.share(OBJECT)分享功能,可以分享 纯文 / 纯图 / 图文 / 视频 / 音乐 / 小程序 ,但是唯独没有文件分享的选项,无法分享dpf, excel的xlsx文档等等,如果原生做文件分享很简单,分享pdf、分享xlsx都很简单
Android原生代码分享
1、注册
在执行分享之前必须要先初始化,通过appid来注册关联,如果希望得到分享之后的成功失败回调,可以通过iwxapi.handleIntent(getIntent(), this);来获取。如果无关紧要,也可以直接注释掉这行。
public void init(JSONObject options){
// 微信开放平台上申请的一个appid
this.APP_ID = options.getString("appid");
iwxapi = WXAPIFactory.createWXAPI(mContext(), APP_ID, false);
// 用于获取分享成功失败的状态,如果不需要状态就可以注释掉
iwxapi.handleIntent(getIntent(), this);
iwxapi.registerApp(APP_ID);
}
2、分享的功能代码
通过创建WXMediaMessage 媒体消息对象来完成文件的分享,注意标题一定要带上后缀名( msg.title = “work.xlsx” )
WXFileObject fileObj = new WXFileObject();
fileObj.fileData = inputStreamToByte(fullPath);// fullPath文件路径
fileObj.filePath = fullPath;
//使用媒体消息分享
WXMediaMessage msg = new WXMediaMessage(fileObj);
msg.title = "work.xlsx" ; // 注意需要带上后缀名,否则分享的内容可能无法打开
// 发送分享请求
SendMessageToWX.Req req = new SendMessageToWX.Req();
// 创建唯一标识 这里随意用时间戳生成了一个
req.transaction = String.valueOf(System.currentTimeMillis());
req.message = msg;
// 此处场景设定为 微信聊天界面
req.scene = SendMessageToWX.Req.WXSceneSession;
// 执行
iwxapi.sendReq(req);
封装成插件后供 uni-app端调用
插件完成后,通过下面的uniapp层代码来调用,执行分享,通过调用原生方法shareFile2WX,传入uniapp的文件路径和应用的appid。
<script>
var shareObj = uni.requireNativePlugin("luanqing-share");
export default {
methods: {
share2WeChat(){
let appid = uni.getSystemInfoSync().appId;
shareObj.shareFile2WX({uniPath:this.path,uniAppId:appid});
}
}
}
</script>
为了方便开发者直接使用,也可以直接前往
链接: 点击前往下载
上图