Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android接入微信分享(朋友、朋友圈)、QQ分享(好友、空間)

android接入微信分享(朋友、朋友圈)、QQ分享(好友、空間)

編輯:關於Android編程

1、申請注冊你的appid
2、下載sdk
QQ: http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD
微信:https://open.weixin.qq.com/cgi-bin/readtemplate?t=resource/app_download_android_tmpl&lang=zh_CN
3、將下載的文件
這裡寫圖片描述
導入進工程下的app/libs/下,liba開頭的的微信需要的,另外兩個是QQ需要的
閱讀官方文檔QQ:http://wiki.open.qq.com/wiki/mobile/API%E8%B0%83%E7%94%A8%E8%AF%B4%E6%98%8E
微信:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317340&token=&lang=zh_CN
PS 微信需要安裝簽名生成工具輸入包名申請。
4、在 AndroidManifest.xml 中配置
微信:


        

QQ:


            
                
                
                
                
            
        
        
    

5、接下來就是代碼,微信還需要在報名下指定文件夾中新建指定類名的activity
這裡寫圖片描述

WXEntryActivity類:

public class WXEntryActivity  extends AppCompatActivity implements IWXAPIEventHandler {
    private final String APP_ID= "你的appid";
    private IWXAPI api;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 通過WXAPIFactory工廠,獲取IWXAPI的實例
        api = WXAPIFactory.createWXAPI(this, APP_ID, false);
        api.registerApp(APP_ID);
        api.handleIntent(getIntent(), this);
    }

    //微信發送消息給app,app接受並處理的回調函數
    @Override
    public void onReq(BaseReq req) {

    }

    //app發送消息給微信,微信返回的消息回調函數,根據不同的返回碼來判斷操作是否成功
    @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();
    }
}

ShareActivity類:

public class ShareActivity extends BaseActivity implements View.OnClickListener {
    private final String W_APPID = "wxd70e5a411362e82b";
    private IWXAPI api;

    private final String Q_APPID = "1105648864";
    private Tencent mTencent;

    private Button quit;
    private ImageView qZone;
    private ImageView qq;
    private ImageView weichat;
    private ImageView weichatFriend;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.share_popup);
        regToWx();
        regToQQ();
        setBaseActionbar();
        initView();
    }

    private void regToQQ() {
        // Tencent類是SDK的主要實現類,開發者可通過Tencent類訪問騰訊開放的OpenAPI。
        // 其中APP_ID是分配給第三方應用的appid,類型為String。
        mTencent = Tencent.createInstance(Q_APPID, mContext);
    }

    private void regToWx() {
        api = WXAPIFactory.createWXAPI(this, W_APPID, true);
        api.registerApp(W_APPID);
    }

    private void initView() {
        quit = (Button) findViewById(R.id.quit);
        qZone = (ImageView) findViewById(R.id.qzone);
        qq = (ImageView) findViewById(R.id.qq);
        weichat = (ImageView) findViewById(R.id.weichat);
        weichatFriend = (ImageView) findViewById(R.id.weichat_friend);
        actionbarLeft.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
        quit.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });

        qZone.setOnClickListener(this);
        qq.setOnClickListener(this);
        weichat.setOnClickListener(this);
        weichatFriend.setOnClickListener(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }

    private void setBaseActionbar() {
        setActionbarLeft(R.mipmap.pixel_ic_toolbar_back);
        setActionbarTitle("分享", "SAHRE");
        hideActionbarRight();
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.qzone:
//                mLog("點擊QQ空間");
                qq(true);
                break;
            case R.id.qq:
//                mLog("點擊QQ");
                qq(false);
                break;
            case R.id.weichat:
//                mLog("點擊威信");
                weiChat(0);
                break;
            case R.id.weichat_friend:
//                mLog("點擊朋友圈");
                weiChat(1);
                break;
            default:
                break;
        }
    }

    private void qq(boolean flag) {
        if (mTencent.isSessionValid() && mTencent.getOpenId() == null) {
            mToast("您還未安裝QQ", 0);
        }

        final Bundle params = new Bundle();
        params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_APP);
        params.putString(QQShare.SHARE_TO_QQ_TITLE, "要分享的標題");
        params.putString(QQShare.SHARE_TO_QQ_SUMMARY,  "要分享的摘要");
        params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, "http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif");
        params.putString(QQShare.SHARE_TO_QQ_APP_NAME,  "測試應用222222");
        if(flag){
            params.putInt(QQShare.SHARE_TO_QQ_EXT_INT,  QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);
        }

        mTencent.shareToQQ(ShareActivity.this, params, new ShareListener());
    }

    // 0-分享給朋友  1-分享到朋友圈
    private void weiChat(int flag) {
        if (!api.isWXAppInstalled()) {
            mToast("您還未安裝微信", 0);
            return;
        }

        //創建一個WXWebPageObject對象,用於封裝要發送的Url
        WXWebpageObject webpage = new WXWebpageObject();
        webpage.webpageUrl = "http://www.mojichina.com/";
        //創建一個WXMediaMessage對象
        WXMediaMessage msg = new WXMediaMessage(webpage);
        msg.title = "測試";
        msg.description = "這是我做的一款天氣類app,高端大氣上檔次,快來看看吧!";

        SendMessageToWX.Req req = new SendMessageToWX.Req();
        req.transaction = String.valueOf(System.currentTimeMillis());//transaction字段用於唯一標識一個請求,這個必須有,否則會出錯
        req.message = msg;

        //表示發送給朋友圈  WXSceneTimeline  表示發送給朋友  WXSceneSession
        req.scene = flag == 0 ? SendMessageToWX.Req.WXSceneSession : SendMessageToWX.Req.WXSceneTimeline;

        api.sendReq(req);
    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        ShareListener myListener = new ShareListener();
        Tencent.onActivityResultData(requestCode, resultCode, data, myListener);
    }

    private class ShareListener implements IUiListener {

        @Override
        public void onCancel() {
            mToast("分享取消", 0);
        }

        @Override
        public void onComplete(Object arg0) {
            mToast("分享成功", 0);
        }

        @Override
        public void onError(UiError arg0) {
            mToast("分享出錯", 0);
        }

    }
}

代碼應該一目了然,actionbarLeft是BaseActivity中的,無視就行,接下來是幾張截圖,應該看的更明白。

QQ分享不出去,是因為appid的問題,大家可以去查一下。
這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述這裡寫圖片描述

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved