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

分享自己的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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值