我有兴趣了解如何在未运行时启动Android应用。让我们假设应用程序已安装在用户的设备上,但该应用程序未运行。当用户访问特定的wifi网络时,我希望该应用程序能够自动启动。
如何实现这一目标?您是否建议使用在后台运行的Android服务来启动应用程序? Android服务是否始终在后台运行?这会给手机带来沉重负担,不断检查Wifi连接的状态吗?
谢谢! 娜塔莉
答案 0 :(得分:2)
您要找的是BroadcastReceiver。您需要创建一个用于侦听网络更改事件,该事件将在手机连接到Wifi时触发。无论应用程序是否正在运行,此广播接收器都将触发。您必须在<application>
节点
<receiver android:name="MyNetworkReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
然后在您创建的BroadcastReceiver中,您可以获取所连接的wifi网络的名称(如果有):http://developer.android.com/reference/android/net/wifi/WifiInfo.html#getSSID()。
注意:android.net.conn.CONNECTIVITY_CHANGE
会因任何连接更改而触发,因此您需要检查是否只是连接到wifi或做了其他事情。
答案 1 :(得分:1)
您应该能够在清单中声明一个允许您的应用唤醒网络更改事件的接收器。您必须唤醒,检查已连接的wifi网络,然后启动活动,如果它是正确的网络。
阅读本节,它会详细解释。
http://developer.android.com/training/basics/network-ops/managing.html#detect-changes
当您在清单中声明a时,它可以唤醒您的应用 在任何时候,即使你没有运行数周。