Android实现分享---QQ、微信、二维码、链接


这个示例是18年朋友邀我做的一个demo,主要是为了方便在界面中使用分享。

先给大家看下效果图吧

因为手机响应速度比较慢,这里就不贴出分享的图啦,可以下载源码看看
GitHub地址:https://github.com/cctxwan/Demo27
CSDN地址:https://download.csdn.net/download/qq_35840038/11015966
在这里插入图片描述

首先,分享的话需要集成第三方,这里就不说那一套申请参数的流程啦,直接上代码。

  • 权限和界面
  • jar包
  • 分享代码
  • 分享注意事项

第一步:权限和界面

<!--权限-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />


<activity
    android:name="com.tencent.tauth.AuthActivity"
    android:launchMode="singleTask"
    android:noHistory="true">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- 这里的这个是开发者后台申请到的参数 -->
        <data android:scheme="tencent101496221" />
    </intent-filter>
</activity>
<activity
    android:name="com.tencent.connect.common.AssistActivity"
    android:configChanges="orientation|keyboardHidden"
    android:screenOrientation="behind"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 微信 -->
<activity
    android:name=".wxapi.WXEntryActivity"
    android:exported="true"
    android:launchMode="singleTop"
    android:theme="@android:style/Theme.NoDisplay" />
注:这些在第三方的文档上都有说明的

第二步:jar包

jar包如下:
在这里插入图片描述

到这里准备工作就结束啦,接下啦就是代码啦,直接贴,代码中有注释

第三步:代码
分享界面xml布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/parent"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/transparent"
    android:orientation="vertical">

    <LinearLayout
        android:orientation="horizontal"
        android:gravity="bottom|center_horizontal"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2">

        <ImageView
            android:gravity="center"
            android:id="@+id/wxFriend"
            android:layout_width="@dimen/dimen_80_dip"
            android:layout_height="@dimen/dimen_80_dip"
            android:layout_marginRight="@dimen/dimen_30_dip"
            android:drawablePadding="@dimen/dimen_10_dip"
            android:src="@mipmap/icon_wx_friend"/>

        <ImageView
            android:gravity="center"
            android:id="@+id/wxTimeline"
            android:layout_width="@dimen/dimen_80_dip"
            android:layout_height="@dimen/dimen_80_dip"
            android:drawablePadding="@dimen/dimen_10_dip"
            android:src="@mipmap/icon_wx_timeline"/>

    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <ImageView
            android:gravity="center"
            android:id="@+id/qqFriend"
            android:layout_width="@dimen/dimen_80_dip"
            android:layout_height="@dimen/dimen_80_dip"
            android:layout_marginRight="@dimen/dimen_30_dip"
            android:drawablePadding="@dimen/dimen_10_dip"
            android:src="@mipmap/icon_qq"/>

        <ImageView
            android:gravity="center"
            android:id="@+id/qzone"
            android:layout_width="@dimen/dimen_80_dip"
            android:layout_height="@dimen/dimen_80_dip"
            android:drawablePadding="@dimen/dimen_10_dip"
            android:src="@mipmap/icon_qzone"/>

    </LinearLayout>

    <LinearLayout
        android:orientation="horizontal"
        android:gravity="top|center_horizontal"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2">

        <ImageView
            android:gravity="center"
            android:id="@+id/qrcode"
            android:layout_width="@dimen/dimen_80_dip"
            android:layout_height="@dimen/dimen_80_dip"
            android:layout_marginRight="@dimen/dimen_30_dip"
            android:drawablePadding="@dimen/dimen_10_dip"
            android:src="@mipmap/icon_qrcode"/>

        <ImageView
            android:gravity="center"
            android:id="@+id/copyLink"
            android:layout_width="@dimen/dimen_80_dip"
            android:layout_height="@dimen/dimen_80_dip"
            android:drawablePadding="@dimen/dimen_10_dip"
            android:src="@mipmap/icon_copy"/>
    </LinearLayout>

</LinearLayout>

activity.class

package com.cc.activity;

import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Point;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.animation.FastOutSlowInInterpolator;
import android.os.Bundle;
import android.view.Display;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.WindowManager;
import android.view.animation.OvershootInterpolator;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.cc.R;
import com.cc.systemstatusbar.StatusBarCompat;
import com.cc.utils.A;
import com.cc.utils.ActivityMan;
import com.cc.utils.ThreadManager;
import com.tencent.connect.common.Constants;
import com.tencent.connect.share.QQShare;
import com.tencent.connect.share.QzonePublish;
import com.tencent.connect.share.QzoneShare;
import com.tencent.mm.opensdk.modelmsg.SendMessageToWX;
import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;
import com.tencent.mm.opensdk.modelmsg.WXWebpageObject;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.tencent.tauth.IUiListener;
import com.tencent.tauth.Tencent;
import com.tencent.tauth.UiError;

import java.util.ArrayList;

public class ShareListActivity extends BaseActivity implements View.OnClickListener {

    //QQ
    public static String QQ_APP_ID = "101496221";
    public static String QQ_APP_Key = "9689fd47f2d4443b9ab685dfb2f43220";

    //WX
    private final String W_APPID = "wxdaf01e3da90f40a9";

    Activity activity = ShareListActivity.this;

    ImageView tvFriend, tvTimeline, tvQrcode, tvCopylink;

    TextView tvCode = null;

    int screenWidth = 0;
    ViewGroup rootView;
    static final int ANIM_TIME = 500;
    int mExtarFlag = 0x00;
    OvershootInterpolator overshootInterpolator = new OvershootInterpolator();

    //URL
    public static String URL = "";
    //title
    public static String TITLE = "";
    //IMG
    public static String IMG = "";

    public static Tencent mTencent;
    int shareType = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setTitle(false);
        StatusBarCompat.setStatusBarColor(activity, ContextCompat.getColor(activity, R.color.cyan));
    }

    @Override
    public int intiLayout() {
        return R.layout.activity_share_list;
    }

    @Override
    public void initData() {
        screenWidth = getScreenWidth(activity);

        Intent intent = getIntent();
        if(intent == null) return;
        URL = intent.getStringExtra("url");
        TITLE = intent.getStringExtra("title");
        IMG = intent.getStringExtra("img");
    }

    @Override
    public void initView() {
        tvFriend = findViewById(R.id.wxFriend);
        tvTimeline = findViewById(R.id.wxTimeline);
        tvQrcode = findViewById(R.id.qrcode);
        tvCopylink = findViewById(R.id.copyLink);


        tvFriend.setOnClickListener(this);
        tvTimeline.setOnClickListener(this);
        tvQrcode.setOnClickListener(this);
        tvCopylink.setOnClickListener(this);


        findViewById(R.id.parent).setOnClickListener(this);
        findViewById(R.id.qqFriend).setOnClickListener(this);
        findViewById(R.id.qzone).setOnClickListener(this);

        rootView = getWindow().getDecorView().findViewById(android.R.id.content);

        tvFriend.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            @Override
            public boolean onPreDraw() {
                tvFriend.getViewTreeObserver().removeOnPreDrawListener(this);
                tvFriend.setTranslationX(-screenWidth / 2);
                tvFriend.setTranslationY(-tvFriend.getHeight() * 2);
                return false;
            }
        });
        tvTimeline.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            @Override
            public boolean onPreDraw() {
                tvTimeline.getViewTreeObserver().removeOnPreDrawListener(this);
                tvTimeline.setTranslationX(screenWidth / 2);
                tvTimeline.setTranslationY(-tvFriend.getHeight() * 2);
                return false;
            }
        });
        tvQrcode.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            @Override
            public boolean onPreDraw() {
                tvQrcode.getViewTreeObserver().removeOnPreDrawListener(this);
                tvQrcode.setTranslationX(-screenWidth / 2);
                tvQrcode.setTranslationY(tvFriend.getHeight() * 2);
                return false;
            }
        });
        tvCopylink.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
            @Override
            public boolean onPreDraw() {
                tvCopylink.getViewTreeObserver().removeOnPreDrawListener(this);
                tvCopylink.setTranslationX(screenWidth / 2);
                tvCopylink.setTranslationY(tvFriend.getHeight() * 2);
                return false;
            }
        });

        tvFriend.post(new Runnable() {
            @Override
            public void run() {
                moveInAnim(false);
            }
        });
    }

    /**
     * 获取宽度
     * @param c
     * @return
     */
    private int getScreenWidth(Context c) {
        if (screenWidth == 0) {
            WindowManager wm = (WindowManager) c.getSystemService(Context.WINDOW_SERVICE);
            Display display = wm.getDefaultDisplay();
            Point size = new Point();
            display.getSize(size);
            screenWidth = size.x;
        }
        return screenWidth;
    }

    private void moveInAnim(boolean isHideCode) {
        ObjectAnimator friendAnimatorX = ObjectAnimator.ofFloat(tvFriend, "TranslationX", 0);
        ObjectAnimator friendAnimatorY = ObjectAnimator.ofFloat(tvFriend, "TranslationY", 0);
        ObjectAnimator timelineAnimatorX = ObjectAnimator.ofFloat(tvTimeline, "TranslationX", 0);
        ObjectAnimator timelineAnimatorY = ObjectAnimator.ofFloat(tvTimeline, "TranslationY", 0);
        ObjectAnimator qrcodeAnimatorX = ObjectAnimator.ofFloat(tvQrcode, "TranslationX", 0);
        ObjectAnimator qrcodeAnimatorY = ObjectAnimator.ofFloat(tvQrcode, "TranslationY", 0);
        ObjectAnimator copyAnimatorX = ObjectAnimator.ofFloat(tvCopylink, "TranslationX", 0);
        ObjectAnimator copyAnimatorY = ObjectAnimator.ofFloat(tvCopylink, "TranslationY", 0);

        AnimatorSet set = new AnimatorSet();
        set.setDuration(ANIM_TIME);

        if (isHideCode) {
            ObjectAnimator animatorX = ObjectAnimator.ofFloat(tvCode, "ScaleX", 0.1f);
            ObjectAnimator animatorY = ObjectAnimator.ofFloat(tvCode, "ScaleY", 0.1f);
            set.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    tvCode.setVisibility(View.INVISIBLE);
                }
            });
            set.playTogether(friendAnimatorX, friendAnimatorY, timelineAnimatorX, timelineAnimatorY
                    , qrcodeAnimatorX, qrcodeAnimatorY, copyAnimatorX, copyAnimatorY, animatorX, animatorY);
        } else {
            set.setInterpolator(new FastOutSlowInInterpolator());
            set.playTogether(friendAnimatorX, friendAnimatorY, timelineAnimatorX, timelineAnimatorY
                    , qrcodeAnimatorX, qrcodeAnimatorY, copyAnimatorX, copyAnimatorY);
        }

        set.start();
    }

    private void addQrcode() {
        if (tvCode != null) {
            tvCode.setVisibility(View.VISIBLE);
            return;
        }
        tvCode = new TextView(activity);
        tvCode.setBackgroundColor(Color.WHITE);
        tvCode.setGravity(Gravity.CENTER_HORIZONTAL);
        tvCode.setText("请扫描二维码分享");
        tvCode.setPadding(80, 40, 80, 40);
        tvCode.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, R.mipmap.icon_scan);
        tvCode.setCompoundDrawablePadding(20);
        tvCode.setTextColor(Color.BLACK);
        tvCode.setTextSize(20);
        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        params.gravity = Gravity.CENTER;
        tvCode.setScaleX(0.1f);
        tvCode.setScaleY(0.1f);
        tvCode.setId(R.id.tvScan);
        tvCode.setOnClickListener(this);
        rootView.addView(tvCode, params);
        tvCode.setOnClickListener(this);
    }

    private void moveOutAnim(boolean isFinishActivity, boolean isShowCode) {
        ObjectAnimator friendAnimatorX = ObjectAnimator.ofFloat(tvFriend, "TranslationX", -screenWidth / 2);
        ObjectAnimator friendAnimatorY = ObjectAnimator.ofFloat(tvFriend, "TranslationY", -tvFriend.getHeight() * 2);
        ObjectAnimator timelineAnimatorX = ObjectAnimator.ofFloat(tvTimeline, "TranslationX", screenWidth / 2);
        ObjectAnimator timelineAnimatorY = ObjectAnimator.ofFloat(tvTimeline, "TranslationY", -tvFriend.getHeight() * 2);
        ObjectAnimator qrcodeAnimatorX = ObjectAnimator.ofFloat(tvQrcode, "TranslationX", -screenWidth / 2);
        ObjectAnimator qrcodeAnimatorY = ObjectAnimator.ofFloat(tvQrcode, "TranslationY", tvFriend.getHeight() * 2);
        ObjectAnimator copyAnimatorX = ObjectAnimator.ofFloat(tvCopylink, "TranslationX", screenWidth / 2);
        ObjectAnimator copyAnimatorY = ObjectAnimator.ofFloat(tvCopylink, "TranslationY", tvFriend.getHeight() * 2);

        AnimatorSet set = new AnimatorSet();
        set.setDuration(ANIM_TIME);

        if (isShowCode) {
            addQrcode();
            ObjectAnimator animatorScaleX = ObjectAnimator.ofFloat(tvCode, "ScaleX", 1f);
            ObjectAnimator animatorScaleY = ObjectAnimator.ofFloat(tvCode, "ScaleY", 1f);
            animatorScaleX.setInterpolator(overshootInterpolator);
            animatorScaleY.setInterpolator(overshootInterpolator);
            set.playTogether(friendAnimatorX, friendAnimatorY, timelineAnimatorX, timelineAnimatorY
                    , qrcodeAnimatorX, qrcodeAnimatorY, copyAnimatorX, copyAnimatorY, animatorScaleX, animatorScaleY);
        } else {
            set.playTogether(friendAnimatorX, friendAnimatorY, timelineAnimatorX, timelineAnimatorY
                    , qrcodeAnimatorX, qrcodeAnimatorY, copyAnimatorX, copyAnimatorY);
        }

        if (isFinishActivity) {
            set.addListener(new AnimatorListenerAdapter() {
                @Override
                public void onAnimationEnd(Animator animation) {
                    ActivityMan.getmInstance().finishActivity(activity);
                    overridePendingTransition(0, 0);
                }
            });
        }

        set.start();
    }

    /**
     * 复制
     */
    private void copyToClipBoard() {
        ClipboardManager myClipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
        ClipData clip = ClipData.newPlainText("Copied Text", "http://daijiushi.com/");
        myClipboard.setPrimaryClip(clip);
        Toast.makeText(activity, "分享链接已复制到剪切板", Toast.LENGTH_SHORT).show();
    }

    private void back() {
        if (tvCode != null && tvCode.isShown()) {
            moveInAnim(true);
            return;
        }
        moveOutAnim(true, false);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.wxFriend:
                //发送给朋友
                wxShare(0);
                break;
            case R.id.wxTimeline:
                //分享到朋友圈
                wxShare(1);
                break;
            case R.id.qrcode:
                //二维码分享
                moveOutAnim(false, true);
                break;
            case R.id.copyLink:
                //复制链接
                copyToClipBoard();
                break;
            case R.id.parent:
                //返回
                back();
                break;
            case R.id.tvScan:
                //二维码点击
                moveInAnim(true);
                break;
            case R.id.qqFriend:
                //发送给QQ朋友
                qqFriend();
                break;
            case R.id.qzone:
                //分享到QQ空间
                qzone();
                break;
            default:
                break;
        }
    }

    /**
     * 分享到QQ空间
     */
    private void qzone() {
        final Bundle params = new Bundle();
        params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE, shareType);
        params.putString(QzoneShare.SHARE_TO_QQ_TITLE, TITLE);
        params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, URL);
        params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL, URL);
        ArrayList<String> imgUrlList = new ArrayList<>();
        imgUrlList.add("http://f.hiphotos.baidu.com/image/h%3D200/sign=6f05c5f929738bd4db21b531918a876c/6a600c338744ebf8affdde1bdef9d72a6059a702.jpg");
        params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL,imgUrlList);// 图片地址
        if (shareType == QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT) {
            doShareToQzone(params);
        }
    }

    /**
     * 用异步方式启动分享
     * @param params
     */
    private void doShareToQzone(final Bundle params) {
        mTencent = Tencent.createInstance(QQ_APP_ID, this);
        // QZone分享要在主线程做
        ThreadManager.getMainHandler().post(new Runnable() {

            @Override
            public void run() {
                if (null != mTencent) {
                    mTencent.shareToQzone(activity, params, qZoneShareListener);
                }
            }
        });
    }

    IUiListener qZoneShareListener = new IUiListener() {

        @Override
        public void onCancel() {
            Toast.makeText(activity, R.string.qq_qzone_cancel, Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onError(UiError e) {
            A.C_Log(activity, "" + e.errorMessage);
            Toast.makeText(activity, R.string.qq_qzone_error, Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onComplete(Object response) {
            Toast.makeText(activity, R.string.qq_qzone_succ, Toast.LENGTH_SHORT).show();
            ActivityMan.getmInstance().finishActivity(activity);
        }

    };

    /**
     * 发送给QQ朋友
     */
    private void qqFriend() {
        final Bundle params = new Bundle();
        if (shareType != QQShare.SHARE_TO_QQ_TYPE_IMAGE) {
            //
            params.putString(QQShare.SHARE_TO_QQ_TITLE, TITLE);
            params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, URL);
            params.putString(QQShare.SHARE_TO_QQ_SUMMARY, URL);
        }
        params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, IMG);
        params.putString(shareType == QQShare.SHARE_TO_QQ_TYPE_IMAGE ? QQShare.SHARE_TO_QQ_IMAGE_LOCAL_URL
                : QQShare.SHARE_TO_QQ_IMAGE_URL, IMG);
        params.putString(QQShare.SHARE_TO_QQ_APP_NAME, getPackageName());
        params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, shareType);
        params.putInt(QQShare.SHARE_TO_QQ_EXT_INT, mExtarFlag);

        doShareToQQ(params);
        return;
    }

    private void doShareToQQ(final Bundle params) {
        mTencent = Tencent.createInstance(QQ_APP_ID, this);
        // QQ分享要在主线程做
        ThreadManager.getMainHandler().post(new Runnable() {

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

    IUiListener qqShareListener = new IUiListener() {
        @Override
        public void onCancel() {
            if (shareType != QQShare.SHARE_TO_QQ_TYPE_IMAGE) {
                Toast.makeText(activity, R.string.qqshare_cancel, Toast.LENGTH_SHORT).show();
            }
        }
        @Override
        public void onComplete(Object response) {
            Toast.makeText(activity, R.string.qqshare_succ, Toast.LENGTH_SHORT).show();
            ActivityMan.getmInstance().finishActivity(activity);
        }
        @Override
        public void onError(UiError e) {
            Toast.makeText(activity, R.string.qqshare_error, Toast.LENGTH_SHORT).show();
        }
    };


    /**
     * 分享
     * @param flag 0:分享给朋友   1:朋友圈
     */
    private void wxShare(int flag) {
        IWXAPI api = WXAPIFactory.createWXAPI(this, W_APPID);
        api.registerApp(W_APPID);

        if (!api.isWXAppInstalled()) {
            Toast.makeText(activity, "您还未安装微信客户端",
                    Toast.LENGTH_SHORT).show();
            return;
        }

        //创建一个WXWebPageObject对象,用于封装要发送的Url
        WXWebpageObject webpage = new WXWebpageObject();
        webpage.webpageUrl = "http://www.mojichina.com/";
        //创建一个WXMediaMessage对象
        WXMediaMessage msg = new WXMediaMessage(webpage);
        msg.title = "给明桑的测试";
        msg.description = "国服第一帅你寇哥,高端大气上档次,快来看看吧!";
        Bitmap thumb = BitmapFactory.decodeResource(getResources(),R.drawable.default_image);
        msg.setThumbImage(thumb);

        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);
    }

    /**
     * 回调
     * @param requestCode
     * @param resultCode
     * @param data
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == Constants.REQUEST_QQ_SHARE) {
            Tencent.onActivityResultData(requestCode, resultCode, data, qqShareListener);
        }else if (requestCode == Constants.REQUEST_QZONE_SHARE) {
            Tencent.onActivityResultData(requestCode,resultCode,data,qZoneShareListener);
        }
    }
}

WXEntryActivity.class

package com.cc.wxapi;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

import com.cc.utils.A;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;

/**
 * WX
 */
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {

    private final String APP_ID= "wxdaf01e3da90f40a9";
    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;
        A.C_Log(this, "resp=" + resp);

        switch (resp.errCode) {
            case BaseResp.ErrCode.ERR_OK:
                A.C_Log(this, "SUCC");
                break;
            case BaseResp.ErrCode.ERR_USER_CANCEL:
                A.C_Log(this, "CANCEL");
                break;
            case BaseResp.ErrCode.ERR_AUTH_DENIED:
                A.C_Log(this, "DENIED");
                break;
            default:
                A.C_Log(this, "default");
                break;
        }

        Toast.makeText(this, result, Toast.LENGTH_LONG).show();
//        finish();
    }
}
注:代码很少,需要注意的地方很多。如下:

分享注意事项
1.所有参数必须在审核通过后才可使用。
2.切记AndroidManifest.xml里面的配置界面。
3.WXEntryActivity.class必须在指定报名下(.wxapi.WXEntryActivity),否则收不到回调。
4.QQ空间分享有多种情况(图片、文字等),可按照自身需求选择。
5.听说后续分享版本将不会提供分享回调通知。

到这为止,所有的功能都已经添加ok了。

附上demo源码

GitHub地址:https://github.com/cctxwan/Demo27
CSDN地址:https://download.csdn.net/download/qq_35840038/11015966

q:486789970
email:[email protected]

如果有什么问题,欢迎大家指导。并相互联系,希望能够通过文章互相学习。

																								---财财亲笔

猜你喜欢

转载自blog.csdn.net/qq_35840038/article/details/88224650