android 微信分享功能,及报错:签名不对,请检查签名是否与开放平台上填写的一致

功能集成:

xml配置:

//权限:


//依赖
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

//配置activity:

        

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输入包名可得到应用签名),就这样,说是缓存的问题,只要重新安装微信就可以了。

你可能感兴趣的:(android 微信分享功能,及报错:签名不对,请检查签名是否与开放平台上填写的一致)