WCF 实例 —— Android 短信助手 (WCF + Android) (2)

[Android端源码下载] [WCF源码下载]
前面一篇重点介绍了服务端的代码,接下来说明下Android客户端的代码,先上张图,客户端的功能组合一目了然。


1) 准备:
android里对于应用的权限控制有着严格的限制,因此根据不同的使用目的,需要在 AndroidManifest.xml 里添加用户权限(uses-permission)。在这个应用里使用了Internet访问,读取短信,发送短信,查询联系人4个主要的功能,所以提前添加下面4个权限:
 
2) Android Http交互

Http交互当然首选org.apache.http下强大的HttpClient 类,这里先包装下封装了基本的调用方法 —— doGet 和 doPost
其中 doPost 传入 Xml/Json 字符串,按照指定的 ContentType 发出请求。
  

3) Android Timer 的使用: (下面的代码并非实际顺序,整体代码看最后贴出来的代码)
在这个小程序里,启动后点击Button启动Timer,然后再次点击则关闭Timer(Timer.cancel)。
android timer 需要设定它的schedule,下面代码中 schedule传入的是一个 TimerTask 匿名类,它重写了run()方法。
相当于.net里的 Tick 事件处理方法。
【功能说明】在Timer中调用 doGet 方法,从WCF服务端取要发送的短信,利用SmsManager发送短信并记录LOG呈现在UI上。

和.net一样,在Timer(线程)里不能直接对UI进行操作,需要向 Handler 发消息,让 Handler 通过重写 handleMessage() 方法实现对UI的更新。Timer里new一个Message,再放入一个Bundle对象,Bundle就像个容器放什么都可以。而Message.what(int型)可以利用来做标志位。
 
4) Android 的短信拦截
android中当系统收到短信会对所有应用发出广播,通过注册BroadcastReceiver的实例再重写onReceive方法就可以收听到收到的短信。(Tip:利用java中内部类可以访问外部类实例成员的特性(C#中不能),可以简化不少编码量,下面的代码中直接调用了mHandler类成员)
【功能说明】当收到一条短信则调用 doPost 方法将短信发送给WCF服务端,并记录LOG呈现在UI上。


5) Android 中的Json序列化和反序列化
在上面两段代码中(Timer和Receiver),可以看到Json的序列化和反序列化的代码:
5-1) 序列化成json字符串:

5-2) 反序列化成字典:

 

 


6) 联系人查询
这里使用的是 Activity.managedQuery() 方法,网上的说明很多了这里不一一累述。

 

吼吼,客户端也介绍完了。再分享一些测试心得,希望能帮助到和我一样的新手们:)
7) android测试经验分享
(1) android 模拟器每次启动都很耗时,但实际不用每次都启动。修改代码保存后断开和模拟器的连接,修改后再Debug启动就可以了。
(2) 短信/电话拨打测试使用 telnet(windows7需要先在windows组件中安装telnet组件)。然后就可以按照如下进行短信测试了。
     cmd > telnet localhost 5554
     sms send <PhoneNo> <content>


(3) 利用 LogCat 帮助你快速发现bug。log4j,log4net大家都很常用了,在android下提供了更方便更容易查看的工具LogCat。工具类——android.util.Log(详细看这里:图解LogCat的用法)
(4) 发布测试,有时候我们常常要发布到真机上看看真实的效果,可以在真机上安装一个FTPServer,这样release之后直接copy到机器上,安装就很方便了。另外自己准备一个key文件,每次发布都用一个key可以保证覆盖安装。 

最后贴上完整代码:
 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
WCF是一种用于创建分布式系统的技术,可与vb.net一起使用。 WCF中可以使用多种协议进行网络通,例如HTTP,TCP和MSMQ等。下面是一个vb.net的WCF网络通实例: 首先,要创建一个WCF服务,您可以使用Visual Studio中的模板。在创建服务时,可以选择使用什么类型的绑定和协议。例如,默认情况下会使用基本HTTP绑定和HTTP协议。 在服务中定义操作合同,这些合同将服务公开为web服务,可以使用它们来处理远程请求。 在客户端应用程序中,您需要首先添加服务引用,可以通过Visual Studio的“添加服务引用”向导来完成。然后,您可以使用该服务的客户端代理来调用远程服务,就像在本地应用程序中一样。 以下是一个简单的WCF服务和客户端应用程序示例: 服务代码: ```vb.net Imports System.ServiceModel <ServiceContract()> Public Interface ICalculator <OperationContract()> Function Add(ByVal x As Double, ByVal y As Double) As Double End Interface Public Class Calculator Implements ICalculator Public Function Add(ByVal x As Double, ByVal y As Double) As Double Implements ICalculator.Add Return x + y End Function End Class Sub Main() Dim host As New ServiceHost(GetType(Calculator)) host.Open() Console.WriteLine("Service started. Press any key to stop.") Console.ReadLine() host.Close() End Sub ``` 客户端代码: ```vb.net Module Module1 Sub Main() Dim client As New CalculatorClient() Console.WriteLine("2 + 3 = " & client.Add(2, 3)) client.Close() Console.ReadLine() End Sub End Module <ServiceContract()> Public Interface ICalculator <OperationContract()> Function Add(ByVal x As Double, ByVal y As Double) As Double End Interface Public Class CalculatorClient Inherits ClientBase(Of ICalculator) Implements ICalculator Public Function Add(ByVal x As Double, ByVal y As Double) As Double Implements ICalculator.Add Return Channel.Add(x, y) End Function End Class ``` 在这个例子中,我定义了一个名为“Calculator”的简单计算器服务,它具有一个Add操作。在客户端应用程序中,我使用了一个名为“CalculatorClient”的客户端代理来调用Add操作,该代理使用了WCF中的默认HTTP绑定和HTTP协议来与服务通。 这就是一个简单的WCF网络通示例,您可以开始使用WCF来创建自己的分布式应用程序,用于实现您的网络通需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值