今天的这篇文章是基于上一篇微信登录的基础实现的。可以先看看我的微信登录的实现。

废话不多说,先看运行效果

首界面,点击微信登录,弹出分享菜单,楼主比较懒,图片和按钮文字都没换,希望大家不要介意

点击微信好友

我们到微信看看是否收到

可以看到,没毛病,再看朋友圈

大家可以看到已经分享成功了呢,是不是很棒呢?

效果看完了,我们再来看下项目结构

这里主要说一下这个标记部分就是我们点击按钮弹出的底部菜单。

其他的文件在微信登录里面都有

这里重点看一下WXEntryActivity这个文件

package com.example.weixindemo.wxapi;

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.net.URLEncoder;

import java.util.List;

import java.util.Map;

import java.util.concurrent.ConcurrentSkipListMap;

import org.json.JSONObject;

import okhttp3.Call;

import okhttp3.Response;

import com.example.weixindemo.App;

import com.example.weixindemo.MainActivity;

import com.example.weixindemo.NetUtils;

import com.example.weixindemo.NetUtils.MyNetCall;

import com.example.weixindemo.R;

import com.example.weixindemo.bean.WeixinBean;

import com.google.gson.Gson;

import com.google.gson.reflect.TypeToken;

import com.tencent.mm.opensdk.modelbase.BaseReq;

import com.tencent.mm.opensdk.modelbase.BaseResp;

import com.tencent.mm.opensdk.modelmsg.SendAuth;

import com.tencent.mm.opensdk.modelmsg.SendMessageToWX;

import com.tencent.mm.opensdk.modelmsg.WXMediaMessage;

import com.tencent.mm.opensdk.modelmsg.WXTextObject;

import com.tencent.mm.opensdk.modelmsg.WXWebpageObject;

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

import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;

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

import android.app.Activity;

import android.content.Intent;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.Bundle;

import android.util.Log;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.Toast;

public class WXEntryActivity extends Activity implements IWXAPIEventHandler {

//public static String WX_APP_ID = "wx712ebdaa2ff851b6";

//private String WX_APP_SECRET = "67bc80cf2ee42da9fdcb1d3509fec472";

public static String APP_ID = "wx712ebdaa2ff851b6";

private IWXAPI iwxapi;

public enum SHARE_TYPE {Type_WXSceneSession, Type_WXSceneTimeline}

public String flag;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// setContentView(R.layout.activity_wxentry);

iwxapi = WXAPIFactory.createWXAPI(this, APP_ID, false);

iwxapi.handleIntent(getIntent(), this);

iwxapi.registerApp(APP_ID);

flag=getIntent().getStringExtra("flag");

Log.e("TGA",flag+"-----------------flag-----------");

if("1".equals(flag)){

shareWXSceneTimeline();

}else if("2".equals(flag)){

shareWXSceneSession();

}else{

finish();

}

}

public void shareWXSceneSession() {

share(SHARE_TYPE.Type_WXSceneSession);

}

public void shareWXSceneTimeline() {

share(SHARE_TYPE.Type_WXSceneTimeline);

}

private void share(SHARE_TYPE type) {

WXWebpageObject webpageObject = new WXWebpageObject();

webpageObject.webpageUrl = "https://blog..net/k571039838k";

WXMediaMessage msg = new WXMediaMessage(webpageObject);

msg.title = "你好,刘明昆";

msg.description = "这是测试的运用应用";

Bitmap thumb = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);

msg.thumbData = bmpToByteArray(thumb, true);

SendMessageToWX.Req req = new SendMessageToWX.Req();

req.transaction = buildTransaction("Req");

req.message = msg;

switch (type) {

case Type_WXSceneSession:

req.scene = SendMessageToWX.Req.WXSceneSession;

break;

case Type_WXSceneTimeline:

req.scene = SendMessageToWX.Req.WXSceneTimeline;

break;

}

iwxapi.sendReq(req);

finish();

}

@Override

protected void onNewIntent(Intent intent) {

super.onNewIntent(intent);

setIntent(intent);

iwxapi.handleIntent(intent, this);

}

@Override

public void onReq(BaseReq baseReq) {

}

@Override

public void onResp(BaseResp resp) {

String result;

switch (resp.errCode) {

case BaseResp.ErrCode.ERR_OK:

result = "分享成功";

// startActivity(new Intent(WXEntryActivity.this,MainActivity.class));

break;

case BaseResp.ErrCode.ERR_USER_CANCEL:

result = "取消分享";

break;

case BaseResp.ErrCode.ERR_AUTH_DENIED:

result = "分享被拒绝";

break;

default:

result = "发送返回";

break;

}

Toast.makeText(this, result, Toast.LENGTH_SHORT).show();

finish();

}

private String buildTransaction(final String type) {

return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();

}

public static byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) {

ByteArrayOutputStream output = new ByteArrayOutputStream();

bmp.compress(Bitmap.CompressFormat.PNG, 100, output);

if (needRecycle) {

bmp.recycle();

}

byte[] result = output.toByteArray();

try {

output.close();

} catch (Exception e) {

e.printStackTrace();

}

return result;

}

}

其实也不难理解,和微信登录大致上是一样的,只是调用的方法不一样。

在我们的主Activity里面点击按钮弹出底部菜单直接几行代码就搞定

final BottomDialog dialog=new BottomDialog(MainActivity.this);

dialog.title(R.string.title) //设置标题

.layout(BottomDialog.GRID) //设置内容 layout,默认为线性(LinearLayout)

.orientation(BottomDialog.VERTICAL) //设置滑动方向,默认为横向

.inflateMenu(R.menu.main,new OnItemClickListener() { //设置监听

@Override

public void click(Item item) {

//单机按钮后的逻辑

}

}).show();

这个底部弹框是观摩了别人写的BottomDialog ,大家也可以直接引用别人的依赖库。

到此,今天的微信分享就讲完了。希望对大家有所帮助,也希望大家多多支持我。

下一章节将讲解使用QQ分享功能的实现

我的博客地址:https://blog..net/k571039838k

Demo下载地址

android qq微信分享到朋友圈,android实现微信朋友圈和微信好友分享功能相关推荐

  1. android qq授权申请appkey,手把手带你集成友盟实现授权登录、分享

    android.jpg 集成准备(获取AppKey) 第一步.png 第二步.png 第三步.png 第四步.png 第五步.png 第六步.png 这里就可以拿到友盟的AppKey了接下来集成友盟 ...

  2. android qq空间效果,更新UI设计 Android手机QQ空间1.2详测

    近日,腾讯发布了Android手机QQ空间1.2版.经过一周的试用,小编认为该版QQ空间的多项创新,大大地发挥了Android平台的价值. 从测试结果来看,Android手机QQ空间1.2版在原有便捷 ...

  3. 最新内测版Android qq,腾讯体验中心发布Android/iPhone QQ 6.5.3 测试版

    腾讯体验中心又同时发布了Android/iPhone QQ 6.5.3测试版体验,上一个测试版同时发布于5月4日,时隔80多天迎来了新版升级,本次更新了按条件查找陌生人时可按年龄或职业筛选,全新短视频 ...

  4. android qq登陆界面代码下载,【Android Demo】QQ登陆界面(一)

    之前以及实现了QQV.0.8.4115的登陆界面,现在来总结一下,并且回顾一下用到过的东西. 先上图: [原图] QQLogin_0.jpg [图一] QQLogin_1.PNG [图二] QQLog ...

  5. android qq图片分享到朋友圈,Android 调用系统分享文字、图片、文件,可直达微信、朋友圈、QQ、QQ空间、微博...

    转载自:https://www.liangzl.com/get-article-detail-18749.html 兼容SDK 18以上的系统,直接调用系统分享功能,分享文本.图片.文件到第三方APP ...

  6. android 空间分享到朋友圈,Android开发之微信分享到好友,朋友圈

    3. 快速集成 第二步:配置AndroidManifest.xml 下面清单文件的配置是全部的,没有的平台就是不需要配置 1.添加权限 2.添加activity信息 (注意: tencent后面的ap ...

  7. android友盟微信分享到朋友圈,干货,Umeng分享纯图片(避免跳坑)到_微信,朋友圈等...

    最近碰到项目需要分享纯图片到  QQ ,朋友圈,微信,微博...... 由于之前集成了Umeng分享,私心想着,这么强大的分享库,必定支持纯图片分享... 怀着这份坚定的信念,终于找到该如何分享纯图片 ...

  8. android+分享微信朋友圈带编辑功能,新功能 微信6.6.6安卓版发布:朋友圈编辑可保留...

    原标题:新功能 微信6.6.6安卓版发布:朋友圈编辑可保留 [PConline资讯]本月月初,微信团队向iOS用户推送了微信6.6.6的更新,而安卓用户则只能够参加到新版的Beta测试中去.就在今天, ...

  9. Android QQ和微信分享

    1. QQ分享 1.1 申请AppID 直接在腾讯开放平台申请就可以了. 1.2 搭建环境 直接去SDK下载界面下载,下载后拷贝jar包到libs目录 配置AndroidManifest.xml文件 ...

最新文章

  1. 多路复用 I/O 模型详解, 为什么他能支持更高的并发
  2. IDT系列:(一)初探IDT,Interrupt Descriptor Table,中断描述符表
  3. VS 2008 .NET Framework 3.5 Training Kit
  4. linux同步硬件和系统时钟,liunx系统下时钟不同步会出现问题 怎么同步Linux 的系统时钟和硬件时钟?...
  5. 做小程序的流程总结(基本篇)
  6. java http zip参数,如何从Web API 2 HttpGet发送zip文件
  7. 8X53 VS 6763
  8. failed to fetch url linux,ubuntu apt-get下载报failed to fetch错误,请问如何解决
  9. python3 获取文件目录_python3--os.path获取当前文件的绝对路径和所在目录
  10. Android Gradle配置资源前缀
  11. 数据治理--浅谈数据标准、元数据、主数据、数据模型
  12. 语音信号处理 | 傅里叶变换、短时傅里叶变换、小波变换、希尔伯特变换、希尔伯特黄变换
  13. 彩色图像与二通道的灰色图像combine
  14. exceljs如何画单元格斜线?
  15. 一个MOS 电平转换电路引发的思考可避免更多的坑
  16. Python Socket联机自动匹配双人五子棋(含登录注册系统与界面,数据库连接,可作结课作业,可用于学习)
  17. Ubuntu安装过程中出现“没有定义根文件系统”,Ubuntu安装过程中无法读取Windows分区
  18. 集智全球开源 聚合中国力量 Tungsten Fabric中文社区成立大会暨社区第一次全员大会成功举行
  19. mac 版本navicate 如何安装破解版
  20. 【创新实训】BERT4EL,基于文本相似度的实体消歧实现

热门文章

  1. linux优先级继承和优先级天花板,关于Linux操作系统内核原理.ppt
  2. java如何进入jframe_JFrame 简单使用
  3. -D_REENTRANT机制
  4. [二次剩余]求解二次剩余
  5. 四大类商业银行实力特点大对比(下)
  6. 模具从设计直到试模的全过程,非常详细!!!
  7. 超级计算机怎么使用,曙光A 超级计算机系统使用指南(12页)-原创力文档
  8. qcow2虚拟磁盘碎片整理方案一
  9. uniapp 关于商城的分类 小米商城的滑动效果
  10. UFPS入门 Unity FPS 教程