先上代码:
private void shareMultiplePictureToTimeLine(File... files) {
Intent intent = new Intent();
ComponentName comp = new ComponentName("com.tencent.mm",
"com.tencent.mm.ui.tools.ShareToTimeLineUI");
intent.setComponent(comp);
intent.setAction(Intent.ACTION_SEND_MULTIPLE);
intent.setType("image/*");
ArrayList<Uri> imageUris = new ArrayList<Uri>();
for (File f : files) {
imageUris.add(Uri.fromFile(f));
}
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris);
intent.putExtra("Kdescription", "wwwwwwwwwwwwwwwwwwww");
startActivity(intent);
}
localIntent = new Intent("android.intent.action.SEND");
localIntent.putExtra("android.intent.extra.TEXT", paramString1);
localIntent.putExtra("sms_body", paramString1);
localIntent.putExtra("Kdescription", paramString1);
if (localUri1 == null)
break;
localIntent.putExtra("android.intent.extra.STREAM", localUri1);
localIntent.setType("image/*");
context.startActivity(Intent.createChooser(localIntent, "Share"));
其中最关键的就是:
intent.putExtra("Kdescription", text);
文字部分一直分享失败,搞了很久都分享失败后来才发现是需要加上这一句了·····坑!
原来Kdescription是微信描述信息的键。
原因是:微信的代码已经做了代码混淆,因此看起来有些困难,但是仔细观察还是有很多东西可以看出来的。在此类中我们寻找Intent传递的有关key的名称,找到了好几个,因此我们可以一个个来测试,最终发现就是Kdescription这个键来传递描述信息。
效果如下:
Paste_Image.png
网友评论
这个没传,朋友圈、qq、微博什么的都可以发,但是发给微信好友不行怎么解决?
发给微信好友多图就提示:分享失败:多文件分享仅限照片格式。
这个传了发给微信好友还是不行!
1.在startActivity的时候,try/catch一下;
2.在startActivity之前,用List<PackageInfo> packageInfos = pkgMgr.getInstalledPackages( PackageManager.GET_ACTIVITIES);遍历机器上所有的activity,然后判断是否有名字为com.tencent.mm.ui.tools.ShareToTimeLineUI的activity,没有就提示用户没有安装微信;
个人推荐第二种,不要总是依赖于try/catch,因为这玩意儿虽然安全,但也带来效率上的损失,并且从逻辑上来说,你的确需要判断是否有没有安装微信,安装过,你才有理由去启动微信朋友圈的activity;