逻辑:点击各平台的分享图标,检测应用是否安装、安卓系统定义ComponentName、图片下载保存到本地(其中遍历的 filePath 里面的文件是以file://开头的本地文件)、各平台分享。
QQ空间分享支持的是QQ空间app的分享,不能在qq中直接打开,这个我还不知道怎么写。
点击分享按钮时候
// 分享到第三方
share:function(type) {
plus.nativeUI.showWaiting("应用检测中...");
let ComponentName;
if(plus.os.name == "Android") {
ComponentName = plus.android.importClass('android.content.ComponentName');
}
// 分享到微信
if(type === 'wx') {
if(plus.os.name == "Android") {
this.componentname = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI");
}
// 检测应用是否安装
this.isInstall('com.tencent.mm','weixin://', type, '微信');
} else if(type === 'line') {
if(plus.os.name == "Android") {// 分享到朋友圈
this.componentname = new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI");
}
this.isInstall('com.tencent.mm','weixin://', type, '微信');
} else if(type === 'weibo') {
// 分享到微博
if(plus.os.name == "Android") {
this.componentname = new ComponentName("com.sina.weibo", "com.sina.weibo.composerinde.ComposerDispatchActivity");
}
this.isInstall('com.sina.weibo','sinaweibo://', type, '微博');
} else if(type === 'QQ') {
if(plus.os.name == "Android") {
this.componentname = new ComponentName("com.tencent.mobileqq", "com.tencent.mobileqq.activity.JumpActivity");
}
this.isInstall('com.tencent.mobileqq','mqq://', type, 'QQ');
} else if(type === 'space') {
if(plus.os.name == "Android") {
this.componentname = new ComponentName("com.qzone", "com.qzonex.module.operation.ui.QZonePublishMoodActivity");
}
this.isInstall('com.qzone','mqq://', type, 'QQ空间');
}
},
// 微信好友、QQ好友,微博多图分享
uniShareHandle:function(type) {
let _this = this;
// 设备信息
let platform = uni.getSystemInfoSync().platform;
let localComponentName;
if(platform === 'ios') {
// ios直接调用系统分享
// #ifdef APP-PLUS
plus.share.sendWithSystem({
type: 'image',
content: _this.copyWord,
pictures: _this.filePath
},function() {
console.log('分享成功');
}, function(e) {
console.log('分享失败:'+JSON.stringify(e));
})
// #endif
} else {
// 不是朋友圈
if(type != 'line') {
let Intent = plus.android.importClass('android.content.Intent');
let ComponentName = plus.android.importClass('android.content.ComponentName');
let ArrayList = plus.android.importClass('java.util.ArrayList');
let Uri = plus.android.importClass('android.net.Uri');
let Environment = plus.android.importClass('android.os.Environment');
let File = plus.android.importClass('java.io.File');
let MediaStore = plus.android.importClass("android.provider.MediaStore");
let act = plus.android.runtimeMainActivity();
let intent = new Intent();
// this.componentname 的值在上面
intent.setComponent(this.componentname);
intent.setType("image/*");
intent.setFlags("android.intent.FLAG_ACTIVITY_NEW_TASK");
intent.setAction("android.intent.action.SEND_MULTIPLE");
let localArrayList = new ArrayList();
for(let i =0;i< this.filePath.length;i++){
// 微信分享不为图片格式缺少下面两段代码
let filePath = plus.io.convertLocalFileSystemURL(this.filePath[i].replace('file://', ''));
let img = Uri.parse(MediaStore.Images.Media.insertImage(act.getContentResolver(), new File(filePath).getAbsolutePath(), null, null))
localArrayList.add(img);
}
intent.putParcelableArrayListExtra("android.intent.extra.STREAM", localArrayList);
act.startActivity(intent);
} else {
// 这里是朋友圈的分享,需要配置证书和appkey才能直接打开朋友圈,但是携带的图片只有一张
let service = this.providerShare['weixin'];
if (!service) {
return;
}
if (service.authenticated) {
this.handleLineShare(service);
} else {
service.authorize(function() {
_this.handleLineShare(service);
}, function(e) {
console.log("认证授权失败");
})
}
}
}
},
分享到朋友圈代码:携带一张图片直接打开朋友圈,需要配置证书和微信appkey(这里的saveList中的图片是网络图片)
// 如果是微信朋友圈,单图分享,手动上传图片
handleLineShare:function(service) {
let msg = {
type: 'image',
pictures: this.saveList
}
msg.title = this.copyWord;
msg.extra = {
scene: 'WXSceneTimeline'
};
service.send(msg, function() {
plus.nativeUI.toast("分享到\"" + service.description + "\"成功!");
}, function(e) {
plus.nativeUI.toast("分享到\"" + service.description + "\"失败!");
})
},
4 个回复
2***@qq.com
逻辑:点击各平台的分享图标,检测应用是否安装、安卓系统定义ComponentName、图片下载保存到本地(其中遍历的 filePath 里面的文件是以file://开头的本地文件)、各平台分享。
QQ空间分享支持的是QQ空间app的分享,不能在qq中直接打开,这个我还不知道怎么写。
点击分享按钮时候
分享到朋友圈代码:携带一张图片直接打开朋友圈,需要配置证书和微信appkey(这里的saveList中的图片是网络图片)
2***@qq.com
你这个解决了吗?
2***@qq.com (作者)
qq,微博可以,微信提示选中图片应为照片格式,暂时微信还没有处理好
2***@qq.com
我微信可以多图了,但是只有安卓,用的h5+plus。朋友圈单图分享。ios直接用的系统分享。你需要的话我给你贴个代码
2020-06-05 17:28
2***@qq.com (作者)
回复 2***@qq.com:麻烦大神给一份代码,参考参考
2020-06-06 17:22
2***@qq.com (作者)
微信朋友圈的多图分享,可以先把图片保存在相册中,然后点击分享朋友圈的时候跳转到微信,手动分享
2***@qq.com
代码怎么写的?
2020-06-12 09:07