`

Android平台第三方应用分享到微信开发

 
阅读更多

转于:

---------------------------------------------------------------------

http://www.chawenti.com/articles/13946.html

 

--------------------------------------------------------------------------------------

 

一、申请APPID

微信公共平台和微博分享一样,也需要申请一个ID,来作为调起微信、分享到微信的唯一标识。

申请微信APPID可以到微信平台http://open.weixin.qq.com/app/list/?lang=zh_CN上申请。具体的申请流程网站上有很详细的介绍,我这里就仅列出一些注意事项:

(1)申请APPID时的应用名字审核通过之后将不允许更改,所以申请时的应用名字一定要提前确定好。微信官方也有详细说明,如下图:

    

(2)应用签名问题:应用签名一定要填写正确,否则会出现第三方应用拉不起微信的情况。

首先可以下载微信官方提供的一个签名生成工具,打开这个应用输入第三方应用的包名就能拿到用于微信的应用签名。但是这里也有需要注意的地方:

1.我们平时开发使用的keystore是C:Usersliwei.android debug.keystore,而发布正式版肯定会有一个特定的keystore(比如:XXX.keystore)。因此,我们很有必要申请两个APPID,一个用于开发测试用,另一个用于正式发版。这样能够更方便平时的开发。

2.假如想使用别人的APPID或者运行别人的demo,可以按下面的步骤来做:

在eclipse中打开window—>preferences—->Android—->build如下图所示:

将别人的C:Usersliwei.android debug.keystore(微信提供的例子中有带这个debug.keystore,所以想运行微信提供的例子要在这里加载debug.keystore),在这加载进来,就可以使用了。

         (3)申请成功之后的APPID如下:

 

二、使用微信API接口

1、微信开放平台的一些公共类

(1)微信SDK会用到的主要类的类图

上面这张图展示的是与微信通信过程中的请求类和响应类。第三方应用通过他们

附带的message字段来携带消息传输给微信进程。其中BaseResp有个内部类是ErrCode,它里面定义了几个常量字段,当我们向微信发送请求后它会作为返回字段返回到我们的应用中来,我们可以根据这个做相应的处理(比如弹个toast来提醒用户分享的状态)。

(2)Message相关的类图

上面提到过,第三方应用是通过请求类和响应类中的message字段来和微信通信的,那么下面的图就展示了Message相关类的类图:

第三方应用和微信就是通过上面的不同种类的Message对象来与微信进行通信,从而能达到想要的效果。

(3)通信相关类

 

上面的IWXAPI就是所说的通信类,所有与微信进行通信的工作都是他在做,我们可以通过下面的工厂类来生成一个IWXAPI对象。旁边的IWXAPIEventHandler接口是需要我们第三方应用来实现的,如果我们想处理微信的请求信息或是我们向他发请求后他返回的标识字段,我们可以按照实现这个接口(可以参考微信开放平台文档上有详细说明http://open.weixin.qq.com/document/gettingstart/android/?lang=zh_CN)。

2.1.2微信与第三方应用通信时序图

(4)第三方应用向微信发送消息时的时序图

应用只需要进行一次注册就行了,我们可以在一个Acitivity的onCreate()中注册。然后在以后的使用中只需要封装消息,让通信类发送即可。从前面的类图中可以看到,封装消息的顺序是首先生成需要发送的媒体对象,然后将媒体对象附加到消息对象中,接着建立请求对象,最后使用通信类发送即可。

在向微信发送消息的时候,会弹出一个分享到微信的弹框,包括分享到微信之后的消息展示,都是微信自己定义的UI展示,第三方应用是无法控制的(只是对不同消息类型,微信的展示也是不同的)。

下面就对代码做简单的引导性介绍,微信平台做的还是比较不错的。举一反三,就能做出来微信的对应功能了。

其对应的代码大致如下:

注册到微信

封装Message(以WXWebpageObject 为例)和发送到微信

 

(5)第三方应用接收微信请求信息的时序图

微信向第三方发送的请求信息分为两种:一种是第三方应用注册到微信后在聊天界面出现的应用图标(如下图所示)。然后点击这个图标能向第三方应用发送请求,第二种是针对微信的WXAppExtendObject类型的对象的,当用户点击了微信中的消息之后,微信就会去请求第三方应用完成请求。

 

它的时序图如下所示:

下面对第三方应用接收微信发送的消息的代码做一些简单的介绍,按照以下步骤来就可以了。

1.在工程中建立包名.wxapi的包,其中包名只的是AndroidManifest.xml下面配置的packageName;

2.在新建的包下面新建一个WXEntryActivity类继承Activity,同时实现IWXAPIEventHandler接口(前面有提到过这个接口,用来接受微信的请求和返回信息)。

3.在onCreate()中调用 mApi.handleIntent(getIntent(),this);来等待微信的回调

4.实现IWXAPIEventHandler的onReq(微信发送请求到第三方应用时,会回调到该方法)和onResp(第三方应用发送到微信的请求处理后的响应结果,会回调到该方法)方法

5.另外需要注意在AndroidManifest.xml中配置WXEntryActivity时需要加上android:exported=”true”,主要是为了使微信进程能够调用第三方应用的进程。

其代码如下:

//在onCreate()中调用handleIntent().来等待微信进程的调用。


//微信进程请求第三方应用的回调。

//第三方应用发送Message到微信之后,微信返回的状态信息。

3.使用微信API注意事项

3.1微信公共平台问题

微信作为一个公共平台,还有一些自身的问题,下面是对我碰到的问题做一些描述:

1、

第三方应用是根据微信添加的参数isappinstalled来判断接收方手机上是否已安装了APP,但是经验证发现,微信的这个判断并不准确,即有时候用户手机上安装了APP,但是isappinstalled的值却为0;有时候没装APP,isappInstalled的值又为1。已经将这个问题反映给了微信团队。

2、

测试过程中会出现这种情况,会有个别手机会出现调不起微信客户端的情况。造成这种情况的原因是微信对缩略图的大小、title、description等参数的大小做了限制,所以有可能是大小超过了默认的范围。一般情况下缩略图超出比较常见。Title、description都是文本,一般不会超过。

3、分享到朋友圈时,是直接在第三方应用上弹出了分享框(这个有区别于分享给好友),分享完成之后,通过HOME键再回到微信,发现分享框依旧存在,并且还出现在桌面上。个人猜测,由于微信分享是新开了一个线程来处理,分享完成之后进程并没有被杀死,所以通过HOME键返回微信的时候会用到该进程。这个问题已经向微信反映。

4、通过第三方应用打开微信,假如用户没登录微信,会让用户登录微信,但是登录完成之后登录框还存在,并且这个时候其实已经登录成功了。造成这个问题的原因应该和第三个问题原因相似。

5、按照微信的要求,需要在工程中新建一个”应用包名.wxapi”的包,并在其下建立一个WXEntityActivity类。那么分享完成之后可能有两种情况发生:

 (1)假如没做任何处理,那么分享完成之后回到第三方应用界面会是一个黑色的界面,啥也没有。

 (2)假如在WXEntityActivity类中在IWXAPIEventHandler接口的实现方法onResp()中调用finish()方法将WXEntityActivity销毁掉,那么分享完成之后将会闪过一个黑色的界面回到第三方应用。

综上,其实我们可以发现,微信分享完成之后会到WXEntityActivity这个Activity中,第一种情况,因为WXEntityActivity没有布局文件,所以就是一个黑色的界面。第二种情况,由于finish掉了WXEntityActivity 这个Activity,所以是黑了一下。

这种情况将WXEntityActivity作为应用的界面展示就没有问题了,但是正常情况下,我们都是在已有的项目上加微信分享这个逻辑,所以,代码迁移也是影响比较大的。解决方法是可以用Android系统提供的android:theme=”@android:style/Theme.NoDisplay”。

6、可以反编译下微信的源码看看。

 以上的部分图片是从其它人写的博客里copy过来的。欢迎大家交流学习。

分享到:
评论

相关推荐

    Android第三方应用分享到微信

    下面将详细讲解如何实现"Android第三方应用分享到微信"的功能,以及在这个过程中可能遇到的关键知识点。 首先,要实现这个功能,你需要在微信开放平台上注册并创建一个应用,获取到唯一的`APPID`。这个`APPID`是...

    Android 接入第三方登录 微信登录 微信分享 demo

    在Android应用开发中,接入第三方登录服务是一种常见的需求,它能提供用户更加便捷的登录体验。本示例主要关注的是微信登录以及分享功能的实现,这对于提升用户互动性和应用的社交化至关重要。以下是对这些知识点的...

    Android 第三方 qq、微信、微博)分享功能

    在Android开发中,集成第三方社交平台的分享功能是常见的需求,比如QQ、微信和微博。这些功能能够增强用户的互动体验,提升应用的社交影响力。本文将深入探讨如何在Android应用中实现QQ、微信和微博的分享功能,并...

    shareSDK android第三方qq,微信登录

    在这个"shareSDK android第三方qq,微信登录"的主题中,我们将深入探讨如何使用ShareSDK实现QQ和微信的第三方登录功能。 首先,ShareSDK是MobTech推出的一款社会化组件化服务平台,支持包括QQ、微信在内的众多社交...

    Android 布局生成微信分享图片

    在Android开发中,微信分享是常见的社交功能,允许用户将应用程序内的内容,如文本、图片、链接等,分享到微信朋友圈或与微信好友互动。在这个过程中,“Android布局生成微信分享图片”是一个关键环节,它涉及到...

    android 分享到微信朋友圈demo

    在Android开发中,将内容分享到微信朋友圈是一项常见的功能,特别是在社交应用中。这个"android分享到微信朋友圈demo"提供了一个可以直接运行的示例,帮助开发者理解和实现这一功能。下面我们将详细探讨相关知识点。...

    Android高级应用源码-微信分享Demo.rar

    OAuth2.0是一种授权协议,允许第三方应用在用户许可的情况下访问其在微信上的部分信息。在Android应用中,用户点击分享按钮后,会跳转到微信授权页面,授权成功后返回应用。这个过程涉及到处理回调URL和解析授权结果...

    Android 第三方应用接入微信平台研究情况分享(一)

    在Android平台上,第三方应用接入微信平台是一个常见的需求,旨在利用微信庞大的用户基础和社交网络来扩展应用的功能和服务。本文将探讨接入过程中的一些关键知识点,主要包括微信SDK的主要类、消息对象、通信类以及...

    Android只分享一张网络图片至微信QQ

    在Android开发中,将一张网络图片分享到微信或QQ是一项常见的功能。这涉及到Android的Intent机制、图片加载库以及第三方SDK的集成。以下是对这个功能的详细解释。 首先,我们需要理解`Intent`在Android中的作用。...

    安卓社会化分享第三方登录相关-微信分享Demo.zip

    在安卓应用开发中,社会化分享和第三方登录是提高用户体验、增加用户粘性的关键特性。本压缩包"安卓社会化分享第三方登录相关-微信分享Demo.zip"包含了一个关于如何集成微信分享功能的示例项目,这对于开发者来说是...

    android实现微信朋友圈和微信好友分享功能2.rar

    微信提供了开放平台(WeChat Open Platform),允许第三方开发者集成微信功能,包括分享到微信朋友圈和微信好友。首先,你需要在微信开放平台注册并创建一个应用,获取到AppID,这是后续集成的关键。 2. **Android...

    android第三方(qq、微信、微博)登录

    - **回调处理**:在AndroidManifest.xml中设置Activity的启动模式,以便正确处理第三方应用返回的数据。 - **错误处理**:在登录过程中可能会遇到各种问题,如网络异常、用户取消授权等,因此需要完善的错误处理机制...

    Android:微信登录,微信分享demo 源码

    微信开放平台为开发者提供了丰富的API接口,允许第三方应用接入微信,实现用户授权登录、数据共享等功能。在使用微信登录和分享前,开发者需要先在微信开放平台上注册并创建应用,获取到AppID和AppSecret。 2. **...

    Android中的微信分享

    这一过程涉及到了Android Studio集成第三方库、权限管理、API调用等多个环节,下面将详细讲解如何在Android应用中实现微信分享。 首先,我们需要在项目中引入微信SDK。这通常通过在`build.gradle`文件中添加依赖来...

    Android应用源码微享,微信分享实例.zip

    通过分析这个压缩包,我们可以学习到如何在Android应用中实现微信分享功能,同时也能了解到Android开发的基本流程,包括项目配置、第三方SDK的集成以及用户交互的实现。这个实例对于初学者和有经验的开发者来说都是...

    Android方面 微信第三方登陆demo

    在Android开发中,微信第三方登录已经成为许多应用必不可少的功能,它为用户提供了一种便捷的登录方式,无需记忆多个账号密码。本教程将详细讲解如何在Android应用中实现微信第三方登录功能,基于提供的"微信第三方...

    基于Android Studio开发的安卓的高仿微信

    7. **推送通知**:为了实现类似微信的消息推送功能,开发者需要集成第三方推送服务,如Firebase Cloud Messaging (FCM) 或极光推送等。这些服务会在后台接收服务器消息并推送到用户的设备上。 8. **多媒体支持**:...

    Android-Android分享SDK包括微信朋友圈微博QQQQ空间等渠道分享。

    在Android应用开发中,集成社交平台的分享功能已经成为不可或缺的一部分,让用户能够方便地将内容传播到各种社交网络。本文将深入探讨如何在Android项目中使用SDK实现微信、朋友圈、微博、QQ以及QQ空间的分享功能。 ...

Global site tag (gtag.js) - Google Analytics