实现微信打开App功能

文章详细介绍了如何在Android应用中接入微信开放SDK,包括添加依赖、注册、实现关键类如AppRegister、ShareSDKWeChatActivity和WXEntryActivity,以及在清单文件中的配置。这些步骤确保了应用能与微信进行交互和分享功能。
摘要由CSDN通过智能技术生成

效果

在这里插入图片描述

要求

在这里插入图片描述

文档

开发标签文档

android接入指南

android实现

1.接入openSDK

dependencies {
api ‘com.tencent.mm.opensdk:wechat-sdk-android:6.8.0’
}

2.注册

在这里插入图片描述
需要在包名为(applicationId)+wxapi的包下加入以上几个类。

类名功能
AppRegister是一个广播接受者,用于注册微信sdk
ShareSDKWeChatActivity封装了shareSDK分享需要的功能
WXConstants存放了微信的app_id,这个id就是shareSDK配置时填写的id
WXEntryActivity给微信的回调。

3.相关实现.

AppRegister

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;

public class AppRegister extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		final IWXAPI api = WXAPIFactory.createWXAPI(context, null,false);

		// 将该app注册到微信
		api.registerApp(WXConstants.APP_ID);
	}
}

对应的清单文件

  <receiver
            android:name="com.wznews.news.app.wxapi.AppRegister"
            android:permission="com.tencent.mm.plugin.permission.SEND">
            <intent-filter>
                <action android:name="com.tencent.mm.plugin.openapi.Intent.ACTION_REFRESH_WXAPP" />
            </intent-filter>
        </receiver>

ShareSDKWeChatActivity

import cn.sharesdk.wechat.utils.WechatHandlerActivity;

/**
 * <pre>
 * Created by zhuguohui
 * Date: 2022/11/16
 * Time: 11:37
 * Desc:这是继承自ShareSDK的微信回调累。避免我们的WXEntryActivity将ShareSDK的相关功能给覆盖
 * </pre>
 *
 */
public class ShareSDKWeChatActivity extends WechatHandlerActivity {
}

对应的清单文件
主需要注册即可

<activity android:name="com.wznews.news.app.wxapi.ShareSDKWeChatActivity" />

WXConstants

/**
 * Created by zhuguohui
 * Date: 2022/11/16
 * Time: 10:37
 * Desc:
 */
public interface WXConstants {
    String APP_ID="wx123456";
}

WXEntryActivity

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;


import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.modelmsg.ShowMessageFromWX;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;
import com.trs.v6.ad.splash.SplashActivityV6;

import org.json.JSONObject;

/**
 * Created by zhuguohui
 * Date: 2022/11/16
 * Time: 10:07
 * Desc:
 */
public class WXEntryActivity extends Activity implements IWXAPIEventHandler {


    private IWXAPI api;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        api = WXAPIFactory.createWXAPI(this, WXConstants.APP_ID, false);

        try {
            Intent intent = getIntent();
            api.handleIntent(intent, this);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);

        setIntent(intent);
        api.handleIntent(intent, this);
    }


    @Override
    public void onReq(BaseReq req) {
        String ext = ((ShowMessageFromWX.Req) req).message.messageExt;
        //以下代码需要替换为自己的业务逻辑
        try {
            JSONObject jsonObject = new JSONObject(ext);
            String url = jsonObject.getString("url");
            SplashActivityV6.openUrl(this, url);
            finish();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    @Override
    public void onResp(BaseResp resp) {

     		 //  finish();
            //把原来ShareSDK的微信回调类WXEntryActivity改成SSDKWXEntryActivity
            //然后在AndroidManifest中,注册SSDKWXEntryActivity
            Intent intent = new Intent(this, ShareSDKWeChatActivity.class);
            intent.putExtras(getIntent());
            startActivity(intent);
            finish();


    }
}

对应的清单文件

  <activity
            android:name="com.wznews.news.app.wxapi.WXEntryActivity"
            android:exported="true"
            android:launchMode="singleTask"
            android:taskAffinity="${applicationId}"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值