功能集成:
xml配置:
//权限:
<uses-permission android:name="android.permission.INTERNET"/>
//依赖
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
//配置activity:
<!-- 微信分享回调 -->
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
WXEntryActivity,要在包下目录新建文件夹:wxapi,在该文件夹中新建类:WXEntryActivity
/** 微信客户端回调activity示例 */
public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {
private static final String TAG="WXEntryActivity";
private IWXAPI wxapi;
public static WxAPIonLinstener linstener;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wxentry);
wxapi = MyApplication.getWxApi();
if (wxapi != null){
wxapi.handleIntent(getIntent(), this);
}else{
// callback是个假设,你可以用自己的办法把数据给回调
Log.e(TAG, "onCreate: 分享失败");
}
wxapi.handleIntent(getIntent(), this);
}
@Override
public void onReq(BaseReq baseReq) {
}
@Override
public void onResp(BaseResp baseResp) {
// 返回结果
if (baseResp != null){
if (baseResp.errCode == BaseResp.ErrCode.ERR_OK){
Log.e(TAG, "onResp:分享成功");
if (linstener!=null) {
linstener.setOnSuccess();
}
}else {
Log.e(TAG, "分享失败,错误码:"+baseResp.errCode);
if (linstener!=null) {
linstener.setOnFailed();
}
}
}else {
Log.e(TAG, "分享失败");
if (linstener!=null) {
linstener.setOnFailed();
}
}
finish();
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
IWXAPI wxAPI =MyApplication.getWxApi() ;
if (wxAPI != null){
wxAPI.handleIntent(getIntent(), this);
}
}
public static void setWxLinstener(WxAPIonLinstener linstener1){
linstener=linstener1;
}
}
调用工具:
public class WxShareUtils {
private static final String WxAppId="wxde255aa13dbf276f";
public static final int Friend=SendMessageToWX.Req.WXSceneSession;
public static final int Pengyouquan=SendMessageToWX.Req.WXSceneTimeline;
// SendMessageToWX.Req.WXSceneSession是分享到好友会话0
// SendMessageToWX.Req.WXSceneTimeline是分享到朋友圈1
/**
* 分享网页类型至微信
*
* @param context 上下文
* @param webUrl 网页的url
* @param title 网页标题
* @param content 网页描述
* @param bitmap 位图
*/
public static void shareWeb(Context context,String webUrl, String title, String content, Bitmap bitmap,int WXSceneSession) {
// 通过appId得到IWXAPI这个对象
IWXAPI wxapi = MyApplication.getWxApi();
// 检查手机或者模拟器是否安装了微信
if (!wxapi.isWXAppInstalled()) {
ToastUtil.newToast(context,"您还没有安装微信");
return;
}
// 初始化一个WXWebpageObject对象
WXWebpageObject webpageObject = new WXWebpageObject();
// 填写网页的url
webpageObject.webpageUrl = webUrl;
// 用WXWebpageObject对象初始化一个WXMediaMessage对象
WXMediaMessage msg = new WXMediaMessage(webpageObject);
// 填写网页标题、描述、位图
msg.title = title;
msg.description = content;
// 如果没有位图,可以传null,会显示默认的图片
msg.setThumbImage(bitmap);
// 构造一个Req
SendMessageToWX.Req req = new SendMessageToWX.Req();
// transaction用于唯一标识一个请求(可自定义)
req.transaction = "webpage";
// 上文的WXMediaMessage对象
req.message = msg;
// SendMessageToWX.Req.WXSceneSession是分享到好友会话0
// SendMessageToWX.Req.WXSceneTimeline是分享到朋友圈1
req.scene = WXSceneSession;
// 向微信发送请求
wxapi.sendReq(req);
}
}
初始化:
// 微信初始化
IWXAPI mWxApi = WXAPIFactory.createWXAPI(this, WxAppId, false);
mWxApi.registerApp(WxAppId);
后来发现报错,提示:签名不对,请检查签名是否与开放平台上填写的一致;查阅资料。
联系自身操作(即我修改了客户微信开发者下的应用信息,我将微信应用下的android 应用签名,修改成其他字符串。使用微信官方提供的一个app(该app输入包名可得到应用签名),就这样,说是缓存的问题,只要重新安装微信就可以了。