由于微信没有开放分享多张图片的接口给开发者,而产品又想要分享多图,shareSDK第三方分享只有目前做了绕过审核分享一张的代码,这时候我们只能通过去反编译微信得到相应的入口。Android下可以直接使用系统的分享,直接调用微信的分享朋友圈的Activity,通过Intent进行传递数据。这种方式其实是因为微信实现了Android系统分享的Intent Action的规则。
规则一:
规则二:
通过清单文件我们可以发现微信接受规则有两个,一个我们猜测是单个图片,另外一个是多图模式,通过代码验证,确实跟我们的猜测一样。
接下来奉献出我的分享图片代码,首先是分享单张图片的代码
public static void sharePicToWXFriendCircle(Context context, String description, String PicPath) {
if (!isInstallWeChart(context)) {
Toast.makeText(context,"您没有安装微信",Toast.LENGTH_SHORT).show();
return;
}
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI"));
// intent.setAction("android.intent.action.SEND_MULTIPLE");
intent.setAction("android.intent.action.SEND");
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(PicPath))); //图片数据(支持本地图片的Uri形式)
intent.putExtra("Kdescription", description); //微信分享页面,图片上边的描述
context.startActivity(intent);
}
分享多张图片到朋友圈,代码如下:
public static void sharePicsToWXFriendCircle(Context context, String description, List paths) {
if (!isInstallWeChart(context)) {
Toast.makeText(context,"您没有安装微信",Toast.LENGTH_SHORT).show();
return;
}
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI"));
intent.setAction("android.intent.action.SEND_MULTIPLE");
ArrayList imageList = new ArrayList();
for (String picPath : paths) {
File f = new File(picPath);
if (f.exists()) {
imageList.add(Uri.fromFile(f));
}
}
if(imageList.size() == 0){
Toast.makeText(context,"图片不存在",Toast.LENGTH_SHORT).show();
return;
}
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_STREAM, imageList); //图片数据(支持本地图片的Uri形式)
intent.putExtra("Kdescription", description); //微信分享页面,图片上边的描述
context.startActivity(intent);
}
分享图片给好友代码:
public static void sharePicToFriendNoSDK(Context context, String path) {
if(!isInstallWeChart(context)){
Toast.makeText(context,"您没有安装微信",Toast.LENGTH_SHORT).show();
return;
}
Intent intent =newIntent();
ComponentName comp =newComponentName("com.tencent.mm","com.tencent.mm.ui.tools.ShareImgUI");
intent.setComponent(comp);
intent.setAction("android.intent.action.SEND");
intent.setType("image/*");
File f =newFile(path);
if(f.exists()){
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(newFile(path)));
}else{
Toast.makeText(context,"文件不存在",Toast.LENGTH_SHORT).show();
return;
}
context.startActivity(intent);
}
检查手机是否安装代码:
/**检查是否安装微信
* @param context
* @return
*/
public static boolean isInstallWeChart(Context context){
PackageInfo packageInfo = null;
try {
packageInfo = context.getPackageManager().getPackageInfo("com.tencent.mm", 0);
} catch (Exception e) {
packageInfo = null;
e.printStackTrace();
}
if (packageInfo == null) {
return false;
} else {
return true;
}
}
以上就是通过绕过微信SDK的机制去分享多张图片到微信朋友圈了。