新浪微博分享和微信朋友圈分享需要打包测试(即:使用自己的.keystore)。如果签名有误,需要修改签名(把打好的包安装的手机上,然后使用签名工具生成你应用的包名的签名,把分享平台中的签名修改为你生成的签名即可)。
1.导包
2.权限
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
3.
<!-- 必须注册在微博授权,分享微博时候用到 -->
<activity android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
android:configChanges="keyboardHidden|orientation"
android:windowSoftInputMode="adjustResize"
android:exported="false" >
</activity>
<service android:name="com.sina.weibo.sdk.net.DownloadService"
android:exported="false"></service>
在你打开分享的Activity中添加 com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY 动作 例如:
<activity
android:name=".SettingActivity"
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait"
android:label="@string/app_name" >
<intent-filter >
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
4.代码实现部分
下面是分享的代码(文字分享)在onCreat() 中加入如下代码
/** * 新浪分享注册key */ mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(this, APP_ID); mWeiboShareAPI.registerApp(); // 将应用注册到微博客户端 mWeiboShareAPI.handleWeiboResponse(getIntent(), this);</span>
/** * 新浪微博分享 * @param v */ private IWeiboShareAPI mWeiboShareAPI; private IWXAPI api; private Tencent mTencent; public void toShareXinLangWB(){ if (mWeiboShareAPI.isWeiboAppSupportAPI()) { sendMultiMessage(); } else { Toast.makeText(this, "没有下载安装新浪微薄客户端,请安装", Toast.LENGTH_SHORT) .show(); } } /** * */ private void sendMultiMessage() { // 1. 初始化微博的分享消息 WeiboMultiMessage weiboMessage = new WeiboMultiMessage(); // 用户可以分享其它媒体资源(网页、音乐、视频、声音中的一种) // weiboMessage.mediaObject = getWebpageObj(); weiboMessage.textObject = getTextObj(); // 2. 初始化从第三方到微博的消息请求 SendMultiMessageToWeiboRequest request = new SendMultiMessageToWeiboRequest(); // 用transaction唯一标识一个请求 request.transaction = String.valueOf(System.currentTimeMillis()); request.multiMessage = weiboMessage; // 3. 发送请求消息到微博,唤起微博分享界面 mWeiboShareAPI.sendRequest(this, request); } /** * 创建文本消息对象。 * * @return 文本消息对象。 */ private TextObject getTextObj() { TextObject textObject = new TextObject(); // http://xhb.jxnews.com.cn/ textObject.actionUrl="http://www.baidu.com"; textObject.text = "我是小明,这是我们的麦客项目测试发的消息 http://www.beehood.com"; return textObject; } protected void onNewIntent(Intent intent) { super.onNewIntent(intent); mWeiboShareAPI.handleWeiboResponse(intent, this); // 当前应用唤起微博分享后,返回当前应用 } @Override public void onResponse(BaseResponse baseResp) {// 接收微客户端博请求的数据。 switch (baseResp.errCode) { case WBConstants.ErrorCode.ERR_OK: Toast.makeText(this, "分享成功", Toast.LENGTH_SHORT).show(); break; case WBConstants.ErrorCode.ERR_CANCEL: Toast.makeText(this, "取消分享", Toast.LENGTH_SHORT).show(); break; case WBConstants.ErrorCode.ERR_FAIL: Toast.makeText(this, "分享失败", Toast.LENGTH_SHORT).show(); break; } }
网页分享
private void sendMultiMessage() { // 1. 初始化微博的分享消息 WeiboMultiMessage weiboMessage = new WeiboMultiMessage(); weiboMessage.mediaObject = getWebpageObj(); // 2. 初始化从第三方到微博的消息请求 SendMultiMessageToWeiboRequest request = new SendMultiMessageToWeiboRequest(); // 用transaction唯一标识一个请求 request.transaction = String.valueOf(System.currentTimeMillis()); request.multiMessage = weiboMessage; // 3. 发送请求消息到微博,唤起微博分享界面 mWeiboShareAPI.sendRequest(SettingActivity.this, request); } /** * 创建多媒体(网页)消息对象。 * * @return 多媒体(网页)消息对象。 */ private WebpageObject getWebpageObj() { WebpageObject mediaObject = new WebpageObject(); mediaObject.identify = Utility.generateGUID(); mediaObject.title = "xioamign"; mediaObject.description = "xiaomingshishui"; // 设置 Bitmap 类型的图片到视频对象里 下面这个必须有,不然无法调起客户端 mediaObject.setThumbImage(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)); mediaObject.actionUrl = "http://www.baidu.com"; mediaObject.defaultText = "Webpage 默认文案"; return mediaObject; }