您的位置:首页 > 移动开发 > Android开发

Android学习之微博SDK集成及实现分享到微博

2016-03-22 16:41 639 查看
分享自己的APP内容到微博或者其他平台是个很常用的需求,也有很多种方式可以实现微博的分享,官方当然肯定是有提供方式来实现微博的分享的,很多第三方服务也可以帮助我们实现微博的分享,当然逼格最高的肯定是使用官方的方式来实现,这毋庸置疑是我们的首选,因为第三方的服务不一定比官方的好用和靠谱。下面来讲下集成微博SDK及实现分享到微博的流程:

1.进入微博开放平台创建应用,得到App Key

微博开放平台地址:http://open.weibo.com/

点击移动应用→立即接入→继续创建→创建新应用,然后根据提示填完整应用的信息,应用的签名需要使用到MD5签名生成工具,MD5签名生成工具及微博SDK在下面的地址下载,MD5签名生成工具用于生成签名,输入包名就能生成签名,复制签名填到信息里即可,注意这里窝使用的是直接debug运行在手机里的App来生成签名的,我想正式场合下大家应该使用签名过的APK来安装到手机里,并生成签名。

微博SDK下载地址:https://github.com/sinaweibosdk/weibo_android_sdk

2.信息填完整之后就会得到App Key,如图



3.SDK下载好之后会发现里面有很多东西,接下来开始集成SDK,这里以Android Studio和Mac OS X为例:

首先在项目中新建文件夹jniLibs,然后复制SDK里的libs文件夹之下所有的.so文件进去,然后在项目中的libs之下也复制一份,同时将weiboSDKCore_3.1.4.jar复制进去,右键Add As Library...



4.SDK文件夹里有文档,大家根据文档来使用SDK:

先添加权限:

<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.WRITE_EXTERNAL_STORAGE" />

5.然后就是使用SDK提供的方法来分享,先是初始化IWeiboShareAPI,输入我们的App Key。然后获取TextObject和ImageObject,这里可以设置自己想要分享的文字和图片,当然还可以分享视频之类的媒体,这里就不演示了。再初始化WeiboMultiMessage对象,设置属性,初始化SendMultiMessageToWeiboRequest对象,设置属性,然后通过iWeiboShareAPI.sendRequest()方法发送请求消息到微博,唤起微博分享界面。

/**
* 主界面
*
* @author yuzhentao
*/
public class MainActivity extends Activity {

private AlertDialog alertDialog;
private Window window;

private IWeiboShareAPI iWeiboShareAPI;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}

private void initView() {
Context context = this;
iWeiboShareAPI = WeiboShareSDK.createWeiboAPI(context, "");//这里输入App Key
iWeiboShareAPI.registerApp();//将应用注册到微博客户端
alertDialog = new AlertDialog.Builder(context).create();
window = alertDialog.getWindow();
findViewById(R.id.button_activity_main).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showShareAlertDialog();
}
});
}

/**
* 显示分享的AlertDialog
*/
private void showShareAlertDialog() {
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int screenWidth = dm.widthPixels;
alertDialog.setCancelable(true);
alertDialog.setCanceledOnTouchOutside(true);
alertDialog.show();
window.setLayout((int) (screenWidth * 0.95F), LinearLayout.LayoutParams.WRAP_CONTENT);
window.setContentView(R.layout.alert_dialog_share_custom);
TextView tvMessage = (TextView) window.findViewById(R.id.textview_message_alert_dialog_share_custom);
LinearLayout llWeibo = (LinearLayout) window.findViewById(R.id.linearlayout_weibo_alert_dialog_share_custom);
tvMessage.setText("分享到");
llWeibo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute() {
super.onPreExecute();
}

@Override
protected Void doInBackground(Void... params) {
sendMultiMessageToWeibo(true, true);
return null;
}

@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
alertDialog.dismiss();
}
}.execute();
}
});
}

/**
* 发送多种消息到微博
*
* @param hasText:是否有文本
* @param hasImage:是否有图片
*/
private void sendMultiMessageToWeibo(boolean hasText, boolean hasImage) {
WeiboMultiMessage weiboMessage = new WeiboMultiMessage();//初始化微博的分享消息
if (hasText) {
weiboMessage.textObject = getTextObj();
}
if (hasImage) {
weiboMessage.mediaObject = getImageObj();
}
SendMultiMessageToWeiboRequest request = new SendMultiMessageToWeiboRequest();
request.transaction = String.valueOf(System.currentTimeMillis());
request.multiMessage = weiboMessage;
iWeiboShareAPI.sendRequest(this, request);//发送请求消息到微博,唤起微博分享界面
}

/**
* 获取文本信息对象
*
* @return TextObject
*/
private TextObject getTextObj() {
TextObject textObject = new TextObject();
textObject.text = "分享自...";//这里输入文本
return textObject;
}

/**
* 获取图片信息对象
*
* @return ImageObject
*/
private ImageObject getImageObj() {
ImageObject imageObject = new ImageObject();
URL url;
try {
url = new URL("http://b.zol-img.com.cn/sjbizhi/images/9/320x510/1452499239911.jpeg");//这里输入图片地址
Bitmap bitmap = null;
try {
bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream());
if (bitmap.getByteCount() > 4096000) {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = bitmap.getByteCount() / 4096000;//缩放比例
options.inJustDecodeBounds = false;
bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream(), null, options);
}
} catch (IOException e) {
e.printStackTrace();
}
imageObject.setImageObject(bitmap);
} catch (MalformedURLException e) {
e.printStackTrace();
}
return imageObject;
}

}


效果图:









Demo地址:http://download.csdn.net/detail/qq_23940659/9469498
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: