1

我的应用程序将 SMS 转发到一个电子邮件地址。一个大问题是当天的第一条消息。设备(Attrix 设置为最大省电模式)处于深度睡眠状态。短信正常接收,但是没有网络/数据连接,直到我手动唤醒手机,非常不雅。

我想请求/强制/欺骗 Android 唤醒它的网络,并允许连接。我有一个 CONNECTIVITY_CHANGE 侦听器,因此应用程序可以检测到这种情况何时异步发生。

目前, HttpClient.execute() 表示“与http://xxx.yyy.com的连接被拒绝”。在收到 SMS 后立即调用。这是在没有任何 isConnected() 检查的情况下尝试的,这些检查确实说“假”。我希望这个请求会引发网络唤醒。

我也试过(注意 - 没有这种方法的经验)

连接管理器.startUsingNetworkFeature(连接管理器.TYPE_MOBILE, "enableHIPRI");

但代码只是......停止......在那里。没有错误、异常、日志,它只是停止。我什至无法检查返回值。

我没有尝试过唤醒锁,因为它们似乎是关于唤醒 CPU(CPU 看起来不错)和屏幕(不在乎)。

在我的应用程序的早期版本中,我走了一条不同的路线。我有一个 TimerTask 每 5 分钟尝试一次,直到成功发送消息(即 Javax Mail transport.send() 不会抛出 MessagingException)。它完全无视有关当前网络状态的任何信息。这似乎非常可靠。但这是在黑暗中投掷飞镖,我相信它可以改进。

谢谢!

PVS

4

0 回答 0