微信分享多张图片

       由于微信没有开放分享多张图片的接口给开发者,而产品又想要分享多图,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的机制去分享多张图片到微信朋友圈了。

你可能感兴趣的:(微信分享多张图片)