分享組件使用記錄,分享組件記錄
應用中經常使用到分享組件,當然,很多第三方都提供了社交分享,像ShareSDK、友盟都有很好的整合。
這裡既不是sharesdk也不是友盟
今天記錄一下整合的細節:
①無論分享到哪個平台,都需要到這個平台註冊相應的應用。
②以分享到、朋友圈、微博為例:
/** * */public class Constant {// public static final String AppID = "wx9117e18be87a2aca";public static final String AppSecret = "1ed5744aa7258808567873a2aa764409";// 這裡是sina開發的appkey 交大移動圖書館public static final String APP_KEY = "2253710460";public static final String REDIRECT_URL = "http://blog.csdn.net/leokelly001";public static final String SCOPE = "email,direct_messages_read,direct_messages_write,"+ "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"+ "follow_app_official_microblog," + "invitation_write";// 應用申請的進階許可權}
share2weibo.java
package com.leo.xjtulib.scanbook.common;import java.io.File;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.widget.Toast;import com.leo.xjtulib.R;import com.sina.weibo.sdk.api.ImageObject;import com.sina.weibo.sdk.api.TextObject;import com.sina.weibo.sdk.api.WebpageObject;import com.sina.weibo.sdk.api.WeiboMultiMessage;import com.sina.weibo.sdk.api.share.BaseResponse;import com.sina.weibo.sdk.api.share.IWeiboHandler;import com.sina.weibo.sdk.api.share.IWeiboShareAPI;import com.sina.weibo.sdk.api.share.SendMultiMessageToWeiboRequest;import com.sina.weibo.sdk.api.share.WeiboShareSDK;import com.sina.weibo.sdk.constant.WBConstants;import com.sina.weibo.sdk.utils.Utility;/** * */public class Share2Weibo extends Activity implements IWeiboHandler.Response {private IWeiboShareAPI mWeiboShareAPI;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);String name = getIntent().getStringExtra("name");String url = getIntent().getStringExtra("url");String picurl = getIntent().getStringExtra("picurl");String score = getIntent().getStringExtra("score");System.out.println("-------start1-------");mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(this, Constant.APP_KEY);mWeiboShareAPI.registerApp();System.out.println("-------start2-------");sendMultiMessage(score, name, url, picurl);}private TextObject getTextObj(String score) {TextObject textObject = new TextObject();textObject.text = "我在@交大移動圖書館 發現了一本不錯的書,豆瓣評分:" + score + "分,快來看看吧";return textObject;}private WebpageObject getWebpageObj(String name, String url) {WebpageObject mediaObject = new WebpageObject();mediaObject.identify = Utility.generateGUID();mediaObject.title = name;mediaObject.description = name;mediaObject.setThumbImage(BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher));if (url.equals(""))url = "http://book.douban.com";mediaObject.actionUrl = url;mediaObject.defaultText = "";return mediaObject;}private ImageObject getImageObj(String picurl) {ImageObject imageObject = new ImageObject();String tempPath = FileUtils.getCachePath() + "/temp.jpg";File f = new File(tempPath);if (f.exists()) {Bitmap thumb = BitmapFactory.decodeFile(tempPath);imageObject.setImageObject(thumb);} else {Bitmap thumb = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher);imageObject.setImageObject(thumb);}return imageObject;}private void sendMultiMessage(String score, String name, String url,String picurl) {WeiboMultiMessage weiboMessage = new WeiboMultiMessage();// 初始化微博的分享訊息// System.out.println("----------初始化微博的分享訊息--------");weiboMessage.textObject = getTextObj(score);weiboMessage.imageObject = getImageObj(picurl);weiboMessage.mediaObject = getWebpageObj(name, url);SendMultiMessageToWeiboRequest request = new SendMultiMessageToWeiboRequest();request.transaction = String.valueOf(System.currentTimeMillis());request.multiMessage = weiboMessage;mWeiboShareAPI.sendRequest(request);// System.out.println("----------結束微博的分享訊息--------");}@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);mWeiboShareAPI.handleWeiboResponse(intent, this);}@Overridepublic void onResponse(BaseResponse baseResp) {System.out.println("------onResponse--------");switch (baseResp.errCode) {case WBConstants.ErrorCode.ERR_OK:Toast.makeText(this, "分享成功", Toast.LENGTH_LONG).show();finish();break;case WBConstants.ErrorCode.ERR_CANCEL:Toast.makeText(this, "取消分享", Toast.LENGTH_LONG).show();finish();break;case WBConstants.ErrorCode.ERR_FAIL:Toast.makeText(this, "分享失敗", Toast.LENGTH_LONG).show();finish();break;default:finish();break;}}}
share2weixin.java
package com.leo.xjtulib.scanbook.common;import java.io.File;import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import com.leo.xjtulib.R;import com.tencent.mm.sdk.openapi.IWXAPI;import com.tencent.mm.sdk.openapi.SendMessageToWX;import com.tencent.mm.sdk.openapi.WXAPIFactory;import com.tencent.mm.sdk.openapi.WXMediaMessage;import com.tencent.mm.sdk.openapi.WXWebpageObject;import com.tencent.mm.sdk.platformtools.Util;/** * */public class Share2Weixin extends Activity {private IWXAPI WXAPI;private static final int TIMELINE = 1;private static final int FRIEND = 2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);final String name = getIntent().getStringExtra("name");final String url = getIntent().getStringExtra("url");final String score = getIntent().getStringExtra("score");final int type = getIntent().getIntExtra("type", 1);share(Share2Weixin.this, type, name, score, url);}public void share(Context context, int type, String name, String score,String url) {WXAPI = WXAPIFactory.createWXAPI(context, Constant.AppID);WXAPI.registerApp(Constant.AppID);WXWebpageObject webpage = new WXWebpageObject();if (url.equals(""))url = "http://book.douban.com";webpage.webpageUrl = url;WXMediaMessage msg = new WXMediaMessage(webpage);if (type == TIMELINE) {msg.title = "我在@交大移動圖書館 發現了一本不錯的書,《" + name + "》豆瓣評分:" + score+ "分";msg.description = name;} else {msg.title = name;msg.description = "我在@交大移動圖書館 發現了一本不錯的書,《" + name + "》豆瓣評分:"+ score + "分";}String tempPath = FileUtils.getCachePath() + "/temp.jpg";File f = new File(tempPath);if (f.exists()) {Bitmap thumb = BitmapFactory.decodeFile(tempPath);msg.thumbData = Util.bmpToByteArray(thumb, true);} else {Bitmap thumb = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher);msg.thumbData = Util.bmpToByteArray(thumb, true);}SendMessageToWX.Req req = new SendMessageToWX.Req();req.transaction = "";req.message = msg;req.scene = type == TIMELINE ? SendMessageToWX.Req.WXSceneTimeline: SendMessageToWX.Req.WXSceneSession;WXAPI.sendReq(req);finish();}}
在應用中啟動activity
Intent intent = new Intent(BookViewActivity_scanbook.this,Share2Weibo.class);intent.putExtra("url", mBook.getUrl());intent.putExtra("score",mBook.getRate() + "");intent.putExtra("picurl",mBook.getBitmap());intent.putExtra("name",mBook.getTitle());startActivity(intent);
在xml中註冊
<pre name="code" class="html"><activity android:name="com.leo.xjtulib.scanbook.common.Share2Weibo" android:configChanges="keyboardHidden|orientation" android:screenOrientation="portrait" > <intent-filter> <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> <activity android:name="com.leo.xjtulib.scanbook.common.Share2Weixin" android:configChanges="keyboardHidden|orientation" android:screenOrientation="portrait" > </activity>
用到的jar包下載:http://download.csdn.net/detail/leokelly001/8693485