安卓原生第三方分享(QQ,微信,微博)

android QQ,微信,微博分享详解


废话不多说,直接上代码。。。。

1.QQ分享

第一步:实例化Tencent对象

Tencent mTencent = Tencent.createInstance(mAppid, this);

mAppid:就是你在腾讯开放平台注册申请的AppID。

第二部:分享图片到空间(shareOnlyImageOnQZone)

public void shareOnlyImageOnQZone(View view) {
    final Bundle params = new Bundle();
    //本地地址一定要传sdcard路径,不要什么getCacheDir()或getFilesDir()
    params.putString(QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL, Environment.getExternalStorageDirectory().getAbsolutePath().concat("/a.png"));
    params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "测试应用");
    params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_IMAGE);
    params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN); //打开这句话,可以实现分享纯图到QQ空间

    doShareToQQ(params);




private void doShareToQQ(final Bundle params) {
    // QQ分享要在主线程做
    ThreadManager.getMainHandler().post(new Runnable() {

        @Override
        public void run() {
            if (null != mTencent) {
                mTencent.shareToQQ(QQActivity.this, params, qqShareListener);
            }
        }
    });
}

IUiListener qqShareListener = new IUiListener() {
    @Override
    public void onCancel() {
        Util.toastMessage(QQActivity.this, "onCancel: ");
    }

    @Override
    public void onComplete(Object response) {

        Util.toastMessage(QQActivity.this, "onComplete: " + response.toString());
    }

    @Override
    public void onError(UiError e) {

        Util.toastMessage(QQActivity.this, "onError: " + e.errorMessage, "e");


这个必须要有,否则分享失败
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Tencent.onActivitResultData(requestCode   }

2.微博分享  
第一步: 创建微博分享接口实例

     IWeiboShareAPI     mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(this, Constants.APP_KEY);
     // NOTE:请务必提前注册,即界面初始化的时候或是应用程序初始化时,进行注册
    mWeiboShareAPI.registerApp();

    // 当 Activity 被重新初始化时(该 Activity 处于后台时,可能会由于内存不足被杀掉了),
    // 需要调用 {@link IWeiboShareAPI#handleWeiboResponse} 来接收微博客户端返回的数据。
    // 执行成功,返回 true,并调用 {@link IWeiboHandler.Response#onResponse};
    // 失败返回 false,不调用上述回调
    if (savedInstanceState != null) {
        mWeiboShareAPI.haboShareAPI.sendReq                                
   第二步:分享图片 
   public void testShareImage(View view) {
    WeiboMessage weiboMessage = new WeiboMessage();
    ImageObject imageObject = new ImageObject();
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
    imageObject.setImageObject(bitmap);
    weiboMessage.mediaObject = imageObject;
    SendMessageToWeiboRequest request = new SendMessageToWeiboRequest();
    request.transaction = String.valueOf(System.s, request)    @Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    // 从当前应用唤起微博并进行分享后,返回到当前应用时,需要在此处调用该函数
    // 来接收微博客户端返回的数据;执行成功,返回 true,并调用
    // {@link IWeiboHandler.Response#onResponse};失败返回 false,不调用上述回调
    mWeiboShareAPI.handleWeiboResponse(intent, this);
}

/**
 * 接收微客户端博请求的数据。
 * 当微博客户端唤起当前应用并进行分享时,该方法被调用。
 *
 * @param baseResp 微博请求数据对象
 * @see {@link IWeiboShareAPI#handleWeiboRequest}
 */
@Override
public void onResponse(BaseResponse baseResp) {
    if (baseResp != null) {
        switch (baseResp.errCode) {
            case WBConstants.ErrorCode.ERR_OK:
                Toast.makeText(this, "success", Toast.LENGTH_LONG).show();
                break;
            case WBConstants.ErrorCode.ERR_CANCEL:
                Toast.makeText(this, "cancel", Toast.LENGTH_LONG).show();
                break;
            case WBConstants.ErrorCode.ERR_FAIL:
                Toast.makeText(this, "Error Message: " + baseResp.errMsg,



Toast.LENGTH_LONG).show();
3.微信分享    第一步:创建IWXAPI实例 
// 通过WXAPIFactory工厂,获取IWXAPI的实例
IWXAPI api = WXAPIFactory.createWXAPI(this, Constants.WX_APP_ID, false);
// 将该app注册到微信
api.registerApp(Constants.WX_APP_ID);
/**
* 分享一张图片到朋友圈
*
* @param view
*/
public void testShareImage2friends(View view) {
share2Wx(false);
}
    
/**
* @param isShareFriend true 分享到朋友,false分享到朋友圈
*/
private void share2Wx(boolean isShareFriend) {
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
WXImageObject imgObj = new WXImageObject(bitmap);

    WXMediaMessage msg = new WXMediaMessage();
    msg.mediaObject = imgObj;
    Bitmap thumbBmp = Bitmap.createScaledBitmap(bitmap, THUMB_SIZE, THUMB_SIZE, true);//缩略图大小
    bitmap.recycle();
    msg.thumbData = Util.bmpToByteArray(thumbBmp, true);  // 设置缩略图

    SendMessageToWX.Req req = new SendMessageToWX.Req();
    req.transaction = buildTransaction("img");
    req.message = msg;
    req.scene = isShareFriend ? SendMessageToWX.Req.WXSceneSession : SendMessageToWX.Req.WXSceneTimeline;
    api.sendReq(req);
}    
在WXEntryActivity 返回执行结果

public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {

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

    //如果分享的时候,该界面没有开启,那么微信开始这个activity时,会调用onCreate,所以这里要处理微信的返回结果
    WxActivity.api.handleIntent(getIntent(), this);
}

// 微信发送请求到第三方应用时,会回调到该方法
@Override
public void onReq(BaseReq baseReq) {

}

// 第三方应用发送到微信的请求处理后的响应结果,会回调到该方法
@Override
public void onResp(BaseResp resp) {
    int result = 0;

    switch (resp.errCode) {
        case BaseResp.ErrCode.ERR_OK:
            result = R.string.errcode_success;
            break;
        case BaseResp.ErrCode.ERR_USER_CANCEL:
            result = R.string.errcode_cancel;
            break;
        case BaseResp.ErrCode.ERR_AUTH_DENIED:
            result = R.string.errcode_deny;
            break;
        default:
            result = R.string.errcode_unknown;
            break;
    }

    Toast.makeText(this, result, Toast.LENGTH_LONG).show();

    finish();
}

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    //如果分享的时候,该已经开启,那么微信开始这个activity时,会调用onNewIntent,所以这里要处理微信的返回结果
    setIntent(intent);
    WxActivity.api.handleIntent(intent, this);
}

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值