分享的步骤和效果:
集成ShareSDK步骤:
1.登入微信开放平台,https://open.weixin.qq.com/,申请应用,在申请应用的过程中,主要有项要填写应用签名,签名工具下载地址https://open.weixin.qq.com/cgi-bin/readtemplate?t=resource/app_download_android_tmpl&lang=zh_CN,其它的按自己的需求写好,提交审核,审核通过后,我们能获得分享到微信朋友圈和分享给微信好友的权限。
2.登入Mob官网http://www.mob.com/,注册账号,申请应用
3.下载集成的sdk ,点击QuickIntegrater.jar,生成项目Sample(没有自定义名称,默认就这个项目名称)
4. 将Sample目录res下文件,全都复制到自己项目下res文件夹下,再将cn下onekeyshare文件及目录都复制到自己项目文件中。
5.在AndroidManifest.xml的文件中,加入需要的权限,和要回调的类的信息
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<!-- 蓝牙分享所需的权限 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<!-- wxapi.WXEntryActivity前面的包名和结构,一定是你在微信开发者平台申请应用填写的包名 -->
<activity
android:name="***********.wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait" />
<activity
android:name="com.mob.tools.MobUIShell"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:windowSoftInputMode="stateHidden|adjustResize">
</activity>
6.添加jar包和ShareSDK.xml文件
接者在ShareSDK.xml文件里找到Wechat相关的,输入你在微信开放平台申请应用获得的AppId和AppSecret,这样你才可以分享到微信好友
<Wechat
Id="4"
SortId="4"
AppId="wx***********2"
AppSecret="54***********5"
UserName="gh_b0c6a9ca668a"
Path="pages/index/index?id=mob"
BypassApproval="false"
WithShareTicket = "true"
MiniprogramType = "2"
Enable="true" />
7.编写分享的代码
//现在是MobSDK.init而不是ShareSDK.init(Context);
//后面的两个参数,是你在mob申请到的Appkey和App Secret
MobSDK.init(MainActivity.this,"2******4","9f********8");
setContentView(R.layout.activity_main);
OnekeyShare oks = new OnekeyShare();
//关闭sso授权
oks.disableSSOWhenAuthorize();
// title标题,印象笔记、邮箱、信息、微信、人人网、QQ和QQ空间使用
oks.setTitle("标题");
// titleUrl是标题的网络链接,仅在Linked-in,QQ和QQ空间使用
oks.setTitleUrl("http://sharesdk.cn");
// text是分享文本,所有平台都需要这个字段
oks.setText("我是分享文本");
//分享网络图片,新浪微博分享网络图片需要通过审核后申请高级写入接口,否则请注释掉测试新浪微博
// oks.setImageUrl("");
// imagePath是图片的本地路径,Linked-In以外的平台都支持此参数
//oks.setImagePath("/sdcard/test.jpg");//确保SDcard下面存在此张图片
// url仅在微信(包括好友和朋友圈)中使用
oks.setUrl("http://sharesdk.cn");
// comment是我对这条分享的评论,仅在人人网和QQ空间使用
oks.setComment("我是测试评论文本");
// site是分享此内容的网站名称,仅在QQ空间使用
oks.setSite("ShareSDK");
// siteUrl是分享此内容的网站地址,仅在QQ空间使用
oks.setSiteUrl("http://sharesdk.cn");
//这里是你点击要分享的平台之后,代码会进入这个回调方法,判断你想分享到哪个平台
oks.setShareContentCustomizeCallback(new ShareContentCustomizeCallback() {
@Override
public void onShare(Platform platform, Platform.ShareParams paramsToShare) {
if (Wechat.NAME.equals(platform.getName()) ||
WechatMoments.NAME.equals(platform.getName())) {
paramsToShare.setShareType(Platform.SHARE_WEBPAGE);
paramsToShare.setUrl("http://sharesdk.cn");
paramsToShare.setTitle("android集成sharesdk分享测试");
}
}
});
// 启动分享GUI
oks.show(MainActivity.this);
//最后,分享成功之后,会进入到显示结果的WXEntryActivity这个activity里,这里也注明了,你可以自己编写显示的样式。
/**
* 处理微信向第三方应用发起的消息
* <p>
* 此处用来接收从微信发送过来的消息,比方说本demo在wechatpage里面分享
* 应用时可以不分享应用文件,而分享一段应用的自定义信息。接受方的微信
* 客户端会通过这个方法,将这个信息发送回接收方手机上的本demo中,当作
* 回调。
* <p>
* 本Demo只是将信息展示出来,但你可做点其他的事情,而不仅仅只是Toast
*/
public void onShowMessageFromWXReq(WXMediaMessage msg) {
if (msg != null && msg.mediaObject != null
&& (msg.mediaObject instanceof WXAppExtendObject)) {
WXAppExtendObject obj = (WXAppExtendObject) msg.mediaObject;
Toast.makeText(this, obj.extInfo, Toast.LENGTH_SHORT).show();
}
}
问题:
1.如果点击分享的平台,但是它自己退出来,并提示分享已取消,可能的情况是assets文件夹是放在src下,而不是main目录下
2.分享到支付宝朋友圈提示分享失败,因为支付宝朋友圈只支持分享网页,即setShareType(Platform.SHARE_WEBPAGE)