前言
相对于使用微信官方的分享sdk,系统调用的分享到微信还是有很大的差异的。
系统分享而微信官方sdk分享的最大区别就是关于朋友圈分享,微信朋友圈对系统分享的限制是只允许分享照片。而对分享给联系人,添加收藏则是没有限制。
调用系统分享
隐式意图为:Intent.ACTION_SEND
其实质是android.intent.action.SEND
。当调用这个意图时,测试系统会弹出一个列表,如图:
该列表包含了,所有注册了”android.intent.action.SEND”以及”android.intent.action.SEND_MULTIPLE”意图的应用。
关键代码:
Intent intent = new Intent(Intent.ACTION_SEND)
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setType("image/jpg");
intent.setType("text/*");
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.putExtra(Intent.EXTRA_SUBJECT, "测试标题");
intent.putExtra(Intent.EXTRA_TEXT, "测试内容");
startActivity(Intent.createChooser(intent, "来自xxx"));
这样做有一个明显的缺点,多了一个用户选择的步骤?怎么把这个步骤减去呢?请往下看!
怎样略过这个列表,知道微信分享页面?
先来轻微的反编译以下微信的apk,查看以下清单文件,节选以下部分:
<activity android:configChanges="keyboardHidden|orientation|screenSize" android:icon="@drawable/icon" android:name="com.tencent.mm.ui.tools.ShareImgUI">
<intent-filter android:label="@string/h6">
<action android:name="android.intent.action.SEND"/>
<ca