返回顶部
首页 > 资讯 > 精选 >Android应用中怎么接入微信分享功能
  • 641
分享到

Android应用中怎么接入微信分享功能

android 2023-05-31 00:05:07 641人浏览 泡泡鱼
摘要

今天就跟大家聊聊有关Android应用中怎么接入微信分享功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。注册应用信息并下载必要工具在微信开放平台注册应用信息下载 签名生成工具获取待

今天就跟大家聊聊有关Android应用中怎么接入微信分享功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

注册应用信息并下载必要工具

  1. 在微信开放平台注册应用信息

  2. 下载 签名生成工具获取待接入应用的签名

  3. 应用信息填入签名

注意:由于一般调试签名和正式签名不一致,测试时可填入测试包的签名,上线时需要改为正式包的签名

接入

在build.gradle中,添加如下依赖:

dependencies {  compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'}

或:

dependencies {  compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'}

其中,前者包含统计功能

AndroidManifest.xml中添加权限和微信回调Activity

<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><!-- for mta statistics --><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.READ_PHONE_STATE"/><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><activity  android:name=".WXEntryActivity"  android:exported="true"  android:screenOrientation="portrait"  android:theme="@style/AppTheme.Fullscreen.Translucent"/>

这里使用了一个透明的Activity来处理微信分享结果回调

主题:

<style name="AppTheme.Fullscreen" parent="Theme.AppCompat.NoActionBar">  <item name="android:windowNoTitle">true</item>  <item name="android:windowFullscreen">true</item>  <item name="android:windowTranslucentNavigation" tools:targetapi="kitkat">true</item></style><style name="AppTheme.Fullscreen.Translucent">  <item name="android:windowBackground">@android:color/transparent</item>  <item name="android:windowIsTranslucent">true</item>  <item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item></style>

Activity

当微信分享成功,点击返回App时,微信会主动调用WXEntryActivity,并将结果通过Intent传给WXEntryActivity,此时调用api.handleIntent(getIntent(), this)对结果进行处理,handleIntent第二个参数为IWXAPIEventHandler,分享结果会在onResp方法中处理,在这里我们发送一个广播,并在WXShare对象中对该广播进行监听

public class WXEntryActivity extends BaseActivity implements IWXAPIEventHandler {    private IWXAPI api;    @Override    protected void onCreate(Bundle savedInstanceState) {      super.onCreate(savedInstanceState);      Logger.i("WXEntryActivity");      WXShare share = new WXShare(this);      api = share  //        .reGISter()          .getApi();      //注意:      //第三方开发者如果使用透明界面来实现WXEntryActivity,需要判断handleIntent的返回值,如果返回值为false,则说明入参不合法未被SDK处理,应finish当前透明界面,避免外部通过传递非法参数的Intent导致停留在透明界面,引起用户的疑惑      try {        if (!api.handleIntent(getIntent(), this)) {          finish();        }      } catch (Exception e) {        e.printStackTrace();      }    }    @Override    protected void onNewIntent(Intent intent) {      super.onNewIntent(intent);      Logger.i("onNewIntent");      setIntent(intent);      if (!api.handleIntent(intent, this)) {        finish();      }    }    @Override    public void onReq(BaseReq baseReq) {    }    @Override    public void onResp(BaseResp baseResp) {      Intent intent = new Intent(WXShare.ACTION_SHARE_RESPONSE);      intent.putExtra(WXShare.EXTRA_RESULT, new WXShare.Response(baseResp));      sendBroadcast(intent);      finish();    }  }

工具类

public class WXShare {    public static final String APP_ID = "wx0123456789";    public static final String ACTION_SHARE_RESPONSE = "action_wx_share_response";    public static final String EXTRA_RESULT = "result";    private final Context context;    private final IWXAPI api;    private OnResponseListener listener;    private ResponseReceiver receiver;    public WXShare(Context context) {      api = WXAPIFactory.createWXAPI(context, APP_ID);      this.context = context;    }    public WXShare register() {      // 微信分享      api.registerApp(APP_ID);      receiver = new ResponseReceiver();      IntentFilter filter = new IntentFilter(ACTION_SHARE_RESPONSE);      context.registerReceiver(receiver, filter);      return this;    }    public void unregister() {      try {        api.unregisterApp();        context.unregisterReceiver(receiver);      } catch (Exception e) {        e.printStackTrace();      }    }    public WXShare share(String text) {      WXTextObject textObj = new WXTextObject();      textObj.text = text;      WXMediaMessage msg = new WXMediaMessage();      msg.mediaObject = textObj;  //    msg.title = "Will be ignored";      msg.description = text;      SendMessageToWX.Req req = new SendMessageToWX.Req();      req.transaction = buildTransaction("text");      req.message = msg;      req.scene = SendMessageToWX.Req.WXSceneSession;      boolean result = api.sendReq(req);      Logger.i("text shared: " + result);      return this;    }    public IWXAPI getApi() {      return api;    }    public void setListener(OnResponseListener listener) {      this.listener = listener;    }    private String buildTransaction(final String type) {      return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();    }    private class ResponseReceiver extends BroadcastReceiver {      @Override      public void onReceive(Context context, Intent intent) {        Response response = intent.getParcelableExtra(EXTRA_RESULT);        Logger.d("type: " + response.getType());        Logger.d("errCode: " + response.errCode);        String result;        if (listener != null) {          if (response.errCode == BaseResp.ErrCode.ERR_OK) {            listener.onSuccess();          } else if (response.errCode == BaseResp.ErrCode.ERR_USER_CANCEL) {            listener.onCancel();          } else {            switch (response.errCode) {              case BaseResp.ErrCode.ERR_AUTH_DENIED:                result = "发送被拒绝";                break;              case BaseResp.ErrCode.ERR_UNSUPPORT:                result = "不支持错误";                break;              default:                result = "发送返回";                break;            }            listener.onFail(result);          }        }      }    }    public static class Response extends BaseResp implements Parcelable {      public int errCode;      public String errStr;      public String transaction;      public String openId;      private int type;      private boolean checkResult;      public Response(BaseResp baseResp) {        errCode = baseResp.errCode;        errStr = baseResp.errStr;        transaction = baseResp.transaction;        openId = baseResp.openId;        type = baseResp.getType();        checkResult = baseResp.checkArgs();      }      @Override      public int getType() {        return type;      }      @Override      public boolean checkArgs() {        return checkResult;      }      @Override      public int describeContents() {        return 0;      }      @Override      public void writeToParcel(Parcel dest, int flags) {        dest.writeInt(this.errCode);        dest.writeString(this.errStr);        dest.writeString(this.transaction);        dest.writeString(this.openId);        dest.writeInt(this.type);        dest.writeByte(this.checkResult ? (byte) 1 : (byte) 0);      }      protected Response(Parcel in) {        this.errCode = in.readInt();        this.errStr = in.readString();        this.transaction = in.readString();        this.openId = in.readString();        this.type = in.readInt();        this.checkResult = in.readByte() != 0;      }      public static final Creator<Response> CREATOR = new Creator<Response>() {        @Override        public Response createFromParcel(Parcel source) {          return new Response(source);        }        @Override        public Response[] newArray(int size) {          return new Response[size];        }      };    }  }

接口

public interface OnResponseListener {  void onSuccess();  void onCancel();  void onFail(String message);}

使用

在需要使用微信分享的Activity中:

@Overrideprotected void onCreate(Bundle savedInstanceState) {  wxShare = new WXShare(this);  wxShare.setListener(new OnResponseListener() {    @Override    public void onSuccess() {      // 分享成功    }    @Override    public void onCancel() {      // 分享取消    }    @Override    public void onFail(String message) {      // 分享失败    }  });}@Overrideprotected void onStart() {  super.onStart();  wxShare.register();}@Overrideprotected void onDestroy() {  wxShare.unregister();  super.onDestroy();}

启动分享

wxShare.share("这是要分享的文字");

到这里微信分享就完成啦!

另外,在微信官方例程中,有个定时刷新应用注册信息的receiver

AndroidManifest.xml中添加:

<receiver  android:name=".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>

代码:

public class AppRegister extends BroadcastReceiver {  @Override  public void onReceive(Context context, Intent intent) {    final IWXAPI api = WXAPIFactory.createWXAPI(context, null);    // 将该app注册到微信    api.registerApp(WXShare.APP_ID);  }}

看完上述内容,你们对Android应用中怎么接入微信分享功能有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网精选频道,感谢大家的支持。

--结束END--

本文标题: Android应用中怎么接入微信分享功能

本文链接: https://lsjlt.com/news/222356.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android应用中怎么接入微信分享功能
    今天就跟大家聊聊有关Android应用中怎么接入微信分享功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。注册应用信息并下载必要工具在微信开放平台注册应用信息下载 签名生成工具获取待...
    99+
    2023-05-31
    android
  • Android 微信图片分享功能
    我们都知道,通过 微信官方 分享sdk 支持图片分享,而且有多种方式。官方链接 可直接查看,不再赘述。 本文要解决的问题是,分享本地带二维码的图片给微信好友和朋友圈。朋友圈图...
    99+
    2022-06-06
    图片 Android
  • Android接收微信、QQ其他应用打开第三方分享功能
    目录这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助在AndroidManifest.xml注册ACTION事件在用于接收分享的Activity里面加接收代码这里给大家分...
    99+
    2022-11-13
    android 接收微信QQ android 接收分享 android第三方分享
  • Android应用中加入微信分享简单方法
    一、申请你的AppID http://open.weixin.qq.com/   友情提示:推荐使用eclipse打包软件最后一步的MD5值去申请AppID 二、官网...
    99+
    2022-06-06
    方法 微信分享 Android
  • Android应用中怎么实现分享功能
    要在Android应用中实现分享功能,可以使用Android内置的分享功能或者使用第三方的分享库。以下是一种常见的实现方法: 创建...
    99+
    2024-04-03
    Android
  • 怎么在Html5中实现微信分享功能
    这期内容当中小编将会给大家带来有关怎么在Html5中实现微信分享功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、安装 weixin-js-sdknpm install weixin-js-...
    99+
    2023-06-09
  • Android 实现微信,微博,微信朋友圈,QQ分享的功能
    Android 实现微信,微博,微信朋友圈,QQ分享的功能 一、去各自所在的开发者平台注册相应的Key值;引入相关jar包、权限等 二、ShareUtil工具类 impor...
    99+
    2022-06-06
    朋友圈 Android
  • Android实现app分享文件到微信功能
    本文实例为大家分享了Android实现app分享文件到微信的具体代码,供大家参考,具体内容如下 两种实现方案: 1.使用WXFileObject构造分享方法发送到微信; 2.调用系统...
    99+
    2024-04-02
  • Android 第三方应用接入微信平台研究情况分享(一)
    微信平台开放后倒是挺火的,许多第三方应用都想试下接入微信这个平台,毕竟可以利用微信建立起来的关系链来拓展自己的应用还是挺不错的,可以节约很多在社交方面的开销,我最近由于实习需要...
    99+
    2022-06-06
    Android
  • Android 第三方应用接入微信平台研究情况分享(二)
    微信平台开放后倒是挺火的,许多第三方应用都想试下,毕竟可以利用微信建立起来的关系链来拓展自己的应用还是挺不错的,可以节约很多在社交方面的开销,我最近由于实习需要也在研究这个东西...
    99+
    2022-06-06
    Android
  • 怎么在Android应用中添加一个分享功能
    这篇文章将为大家详细讲解有关怎么在Android应用中添加一个分享功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Android 分享功能的实现代码一个Activity中,取出设备上安装的...
    99+
    2023-05-31
    android roi
  • 记录Android微信分享功能的吐槽与思考
    在App内潜入分享到微信好友或朋友圈的功能想必大家已经屡见不鲜了,比如Android分享一个网页信息(URL)到微信客户端的代码: public static voi...
    99+
    2022-06-06
    android微信分享 Android
  • VueJs单页应用如何实现微信网页授权及微信分享功能
    这篇文章主要介绍了VueJs单页应用如何实现微信网页授权及微信分享功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在实际开发中,无论是做P...
    99+
    2024-04-02
  • 如何在Java项目中调用微信分享功能
    今天就跟大家聊聊有关如何在Java项目中调用微信分享功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。首先是在页面内写入请求后台的AJAXpublic void WXConfig()...
    99+
    2023-05-31
    java ava
  • Android中怎么实现微信支付功能
    Android中怎么实现微信支付功能,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 去微信开放平台申请微信支付服务,绑定自己的应用这里具体不多讲,但是一定要申请完成,将会得到是...
    99+
    2023-05-31
    android
  • Android开发中应用程序分享功能实例
    本文实例讲述了Android开发中应用程序分享功能。分享给大家供大家参考,具体如下: Intent shareIntent = new Intent(); shareInte...
    99+
    2022-06-06
    程序 应用程序 android开发 Android
  • 关于Android实现简单的微信朋友圈分享功能
    1.先下载微信分享的jar包放在lib目录下,并且添加依赖, 清单文件添加 <activity android:name=".wxapi.WXEntryA...
    99+
    2022-06-06
    朋友圈 Android
  • Android编程之微信SDK分享功能过程步骤详细分析
    本文实例讲述了Android编程之微信SDK分享功能过程步骤详细分析。分享给大家供大家参考,具体如下: 之前已经分析过怎么用官方的demo分享微信信息了,在这里我就不再多说,其...
    99+
    2022-06-06
    程之 sdk Android
  • HTML5中外部浏览器唤起微信分享功能怎么实现
    小编给大家分享一下HTML5中外部浏览器唤起微信分享功能怎么实现,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!最近在做一个手机站,要求点击分享可以直接打开微信分享...
    99+
    2023-06-09
  • Android怎么实现微信登录功能
    这篇文章主要讲解了“Android怎么实现微信登录功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Android怎么实现微信登录功能”吧!目录一、布局界面二、MainActivity.ja...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作