我正在忙着在黑莓上运行的Java应用程序,但在我正在测试的某些设备上,代码似乎没有工作,我很难确定问题所在。
我的问题是:某些手机工作和不工作的问题是否与他们在GSM与CDMA上运行的网络类型有关,并且在某些设备上停止工作的代码是否属于以下某个区域:
1)监听器 - 例如MessageListener和Phone Listener
2)UI对象 - 简单的测试标签和按钮
3)使用ksoap2连接到Web服务
应用程序基本上侦听调用和短信记录,然后将它们发送到Web服务。我得到的问题是,在某些设备上,我看不到任何进入Web服务。我不能在手机上轻松调试这个,因为它是在我们的设备上运行的测试(我在南非)所以我只是想知道我是否可以轻松地得到一些解释而无需在手机上测试以及看看会发生什么。
我已经开发了v4.7和美国的设备v4.6和v5.0已经工作,另一对设备(v4.6和v5.0)没有这样我不认为它的版本问题。
答案 0 :(得分:1)
如果您使用的是直接TCP传输,那么GSM手机通常需要在网络的连接参数中包含网络的APN。这是使用Direct TCP的最大痛点。一些GSM运营商确实在出厂时将APN设置在设备设置中,但许多仍然没有,应由应用程序来完成(或者让最终用户将APN值输入到设备设置中)。
如果您不想处理计划支持的每个移动网络的APN,那么您可能需要使用其他传输,例如WAP2(并非在所有设备上都不可用)或BIS(这需要BlackBerry Alliance计划的会员资格。)
答案 1 :(得分:0)
GSM与CDMA不会产生(直接)差异。操作系统可以有所作为,但你已经测试过了。如果设备连接到BES(黑莓企业服务器),如果安全策略被下推到设备,则可能会产生影响。
但是我觉得它可能与您的代码没有检查所有错误条件有关,因此当Blackberry遇到不良的网络条件,或者Web服务器处于高负载且无法满足时,不会给您预期的行为。响应,或网站可能导致的任何其他错误(同样BES可能是一个问题,阻止访问您的网站)。
例如,您的代码看起来是这样的:
if(call received)
Create Web Request
Add call parameters to Web Request
Execute Web Request
或者看起来像这样:
if(call received)
Add call parameters to queue
if(parameters still in queue)
Create Web Request
Add parameters to Web Request
Execute Web Request
if(request was successful)
Remove parameters from queue