Android分享带链接内容至QQ微信

编程入门 行业动态 更新时间:2024-10-25 10:32:19

Android分享带<a href=https://www.elefans.com/category/jswz/34/1771394.html style=链接内容至QQ微信"/>

Android分享带链接内容至QQ微信

/*** date:2020/7/25* author: wsm(Administrator)* function:分享*/
public class ShareDialog {public static final String TAG = "ShareDialog";private static PopupWindow popupWindow;private static final String TYPE_WECHAT = "session";private static final String TYPE_WECHAT_MOMENT = "timeline";public static final String KEY_SHARE_TYPE = "key_share_type";private static WbShareHandler shareHandler;public static final int SHARE_CLIENT = 1;private static int mShareType = SHARE_CLIENT;private static IWXAPI mApi;private static String token;//    private Tencent mTencent;private static String mSharetypes;/*** * @param v 随便一个textview* @param tokens 请求接口需要的token,可不加* @param activity 上下文* @param url 网络链接地址* @param title 分享标题* @param describe 分享正文* @param image 分享图片* @param type 分享类型*/@SuppressLint("WrongConstant")public static void openPopupWindow(TextView v, String tokens, Activity activity, String url, String title, String describe, String image, String type) {Log.v(TAG, "share type==" + type);mSharetypes = type;//防止重复按按钮token = tokens;if (popupWindow != null && popupWindow.isShowing()) {return;}//设置PopupWindow的ViewView view = LayoutInflater.from(activity).inflate(R.layout.popview_share, null);popupWindow = new PopupWindow(view, RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.WRAP_CONTENT);popupWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);popupWindow.setBackgroundDrawable(new BitmapDrawable());LinearLayout tvShareSeen = view.findViewById(R.id.tvShareSeen);LinearLayout tvSharepyq = view.findViewById(R.id.tvSharepyq);LinearLayout tvShareZQne = view.findViewById(R.id.tvShareZQne);LinearLayout tvShareQQ = view.findViewById(R.id.tvShareQQ);//微信好友分享tvShareSeen.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {setShare(activity, TYPE_WECHAT, url, title, describe, image);if (popupWindow != null && popupWindow.isShowing()) {popupWindow.dismiss();}}});//朋友圈分享tvSharepyq.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {setShare(activity, TYPE_WECHAT_MOMENT, url, title, describe, image);if (popupWindow != null && popupWindow.isShowing()) {popupWindow.dismiss();}}});
//        //微博分享
//        tvShareWeiBo.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View v) {
//                setWeiShare(activity, url, title, image);
//                if (popupWindow != null && popupWindow.isShowing()) {
//                    popupWindow.dismiss();
//                }
//            }
//        });//QQ分享tvShareQQ.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {setQQShare(activity, "QQ", url, title, describe, image);if (popupWindow != null && popupWindow.isShowing()) {popupWindow.dismiss();}}});//QQ空间分享tvShareZQne.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {setQQShare(activity, "QQZQne", url, title, describe, image);if (popupWindow != null && popupWindow.isShowing()) {popupWindow.dismiss();}}});popupWindow.setFocusable(true);popupWindow.setAnimationStyle(R.style.PopupWindow);popupWindow.showAtLocation(v, Gravity.BOTTOM, 0, 0);popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {@Overridepublic void onDismiss() {popupWindow.dismiss();setBackgroundAlpha(activity, 1f);}});setBackgroundAlpha(activity, 0.6f);}/*** wx分享** @param type*/private static void setShare(Activity activity, String type, String url, String title, String describe, String image) {mApi = WXAPIFactory.createWXAPI(activity, 开放平台上的值);mApi.registerApp(开放平台上的值);// 通过appId得到IWXAPI这个对象// 检查手机或者模拟器是否安装了微信if (!mApi.isWXAppInstalled()) {ToastUtil.show("您还没有安装微信");return;}new Thread(new Runnable() {@Overridepublic void run() {try {// 初始化一个WXWebpageObject对象WXWebpageObject webpageObject = new WXWebpageObject();// 填写网页的url(注意:url不能固定否则分享朋友圈编辑页面点击退出再分享其他类型的打开编辑页面还是上次的内容)webpageObject.webpageUrl = url;// 用WXWebpageObject对象初始化一个WXMediaMessage对象WXMediaMessage msg = new WXMediaMessage(webpageObject);// 填写网页标题、描述、位图msg.title = title;msg.description = describe;//网络图片为空则显示本地默认图片if (!TextUtils.isEmpty(image)) {Bitmap bmp = null;bmp = BitmapFactory.decodeStream(new URL(image).openStream());Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, 150, 150, true);bmp.recycle();msg.thumbData = Bitmap2Bytes(thumbBmp);} else {Bitmap bmp = BitmapFactory.decodeResource(mActivity.getResources(), R.mipmap.icon_logo);//设置缩略图Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, 150, 150, true);bmp.recycle();msg.thumbData = bmpToByteArray(thumbBmp, true);}// 构造一个ReqSendMessageToWX.Req req = new SendMessageToWX.Req();// transaction用于唯一标识一个请求(可自定义)req.transaction = "webpage";// 上文的WXMediaMessage对象req.message = msg;//根据type设置分享情景switch (type) {case TYPE_WECHAT://分享到微信好友req.scene = SendMessageToWX.Req.WXSceneSession;break;case TYPE_WECHAT_MOMENT://分享到微信朋友圈req.scene = SendMessageToWX.Req.WXSceneTimeline;break;}mApi.sendReq(req);} catch (Exception e) {e.printStackTrace();}}}).start();}//微博private static void setWeiShare(Activity activity, String url, String title, String image) {WbSdk.install(activity, new AuthInfo(activity,WeiBoConstants.APP_KEY, WeiBoConstants.REDIRECT_URL, WeiBoConstants.SCOPE));mShareType = activity.getIntent().getIntExtra(KEY_SHARE_TYPE, SHARE_CLIENT);shareHandler = new WbShareHandler(activity);shareHandler.registerApp();shareHandler.setProgressColor(0xff33b5e5);WeiboMultiMessage weiboMessage = new WeiboMultiMessage();weiboMessage.mediaObject = getWebpageObj(activity, url, title, image);shareHandler.shareMessage(weiboMessage, mShareType == SHARE_CLIENT);}//qqprivate static void setQQShare(Activity activity, String type, String url, String title, String describe, String image) {// Tencent类是SDK的主要实现类,开发者可通过Tencent类访问腾讯开放的OpenAPI。// 其中APP_ID是分配给第三方应用的appid,类型为String。Tencent mTencent = Tencent.createInstance(QQ开放平台上的值, activity.getApplicationContext());// 1.4版本:此处需新增参数,传入应用程序的全局context,可通过activity的getApplicationContext方法获取Bundle params = new Bundle();if (url != null && title != null && image != null) {if (type.equals("QQ")) {params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, QQShare.SHARE_TO_QQ_TYPE_DEFAULT);params.putString(QQShare.SHARE_TO_QQ_TITLE,  title);// 标题params.putString(QQShare.SHARE_TO_QQ_SUMMARY, describe);// 摘要params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, url);// 内容地址params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, image);// 网络图片地址  params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "应用名称");// 应用名称//params.putString(QQShare.SHARE_TO_QQ_EXT_INT, "其它附加功能");mTencent.shareToQQ(activity, params, new ShareUiListener());} else {params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE, QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT);params.putString(QzoneShare.SHARE_TO_QQ_TITLE, title);// 标题params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, describe);// 摘要params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL, url);// 内容地址ArrayList<String> imgUrlList = new ArrayList<>();imgUrlList.add(image);params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL, imgUrlList);// 图片地址mTencent.shareToQzone(activity, params, new ShareUiListener());}}}private static WebpageObject getWebpageObj(Activity activity, String url, String title, String image) {WebpageObject mediaObject = new WebpageObject();mediaObject.identify = Utility.generateGUID();if (url != null && title != null && image != null) {mediaObject.title = title;mediaObject.description = title;}Bitmap bitmap = BitmapFactory.decodeResource(activity.getResources(), R.drawable.icon_logo);mediaObject.setThumbImage(bitmap);mediaObject.actionUrl = image;mediaObject.defaultText = "app";return mediaObject;}//设置屏幕背景透明效果public static void setBackgroundAlpha(Activity activity, float alpha) {WindowManager.LayoutParams lp = activity.getWindow().getAttributes();lp.alpha = alpha;activity.getWindow().setAttributes(lp);}//QQ分享回调static class ShareUiListener implements IUiListener {@Overridepublic void onComplete(Object response) {Log.v(TAG, "----onCompletesss-----type==" + mSharetypes);}@Overridepublic void onError(UiError uiError) {//分享失败Log.v(TAG, "----uiErrorsss-----");ToastUtil.show("分享失败");}@Overridepublic void onCancel() {//分享取消Log.v(TAG, "----onCancelsss-----");ToastUtil.show("分享取消");}}// 图片转 byte[] 数组public static byte[] Bitmap2Bytes(Bitmap bm) {ByteArrayOutputStream baos = new ByteArrayOutputStream();bmpress(Bitmap.CompressFormat.PNG, 100, baos);return baos.toByteArray();}//本地图片缩略图转byte数组public static byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) {ByteArrayOutputStream output = new ByteArrayOutputStream();bmppress(Bitmap.CompressFormat.PNG, 100, output);if (needRecycle) {bmp.recycle();}byte[] result = output.toByteArray();try {output.close();} catch (Exception e) {e.printStackTrace();}return result;}
}

更多推荐

Android分享带链接内容至QQ微信

本文发布于:2024-02-12 17:40:09,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1688760.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:链接   内容   Android   QQ

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!