業(yè)務(wù)需求:同時(shí)分享多張圖片(參照采源寶APP),實(shí)現(xiàn)至少對(duì)QQ好友,微博,微信,微信朋友圈的分享
qq,微博,微信的接入sdk文檔中并沒有提供多圖分享的接口,shareSDK中針對(duì)相關(guān)app的權(quán)限做了優(yōu)化,但是并沒有提供多圖分享功能,所以考慮自己構(gòu)造一個(gè)intent并設(shè)置
new ArrayList<Uri> listLoadedShareUris = new ArrayList<>();
String exmpaleImagePath = "";//此處應(yīng)用一個(gè)本地圖片地址替代
File tempFile = new File(exmpaleImagePath);
listLoadedShareUris.add(Uri.fromFile(tempFile));//可添加多個(gè)Uri
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, listShareUris);
shareIntent.setType("image/*");
然后根據(jù)提示的彈框選擇需要的程序即可
如果希望過濾掉某些選項(xiàng),需要用intent.createChooser()做一些過濾,具體就不在這兒展開了
關(guān)于定向APP的特定分享方式,通過
intent.setPackage();//設(shè)置目標(biāo)APP
intent.setClassName();//設(shè)置目標(biāo)APP的特定class來指定分享方式(比如微信的朋友圈,好友,收藏之間的區(qū)分)
這兩個(gè)方法對(duì)intent進(jìn)行設(shè)置后startActivity(intent)即可,下面是常用的幾個(gè)分享
shareIntent.setPackage("com.sina.weibo");
shareIntent.setClassName("com.sina.weibo", "com.sina.weibo.composerinde.ComposerDispatchActivity");
type = "微博";
shareIntent.setPackage("com.tencent.mobileqq");
shareIntent.setClassName("com.tencent.mobileqq", "com.tencent.mobileqq.activity.JumpActivity");
type = "QQ";
shareIntent.setPackage("com.tencent.mm");
shareIntent.setClassName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareToTimeLineUI");
type = "朋友圈";
shareIntent.setPackage("com.tencent.mm");
shareIntent.setClassName("com.tencent.mm", "com.tencent.mm.ui.tools.ShareImgUI");
type = "微信好友";
TODO:X 分享到微信朋友圈時(shí),如何攜帶文字內(nèi)容(考慮: 1.inetnt設(shè)置相關(guān)參數(shù); 2.setClassName中class需要重新選擇)
注:
關(guān)于intentchooser和setPackage() setClassName()中參數(shù)的獲取參見
http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2013/1005/1564.html