5

当用户进入有 Wi-Fi 的区域时,我如何打开我的应用程序?这可能吗?假设我的应用程序处于 onPause() 状态(表示我的设备的主屏幕)。现在当设备与 wifi 连接时。它会自动打开我的应用程序。

4

3 回答 3

5

当 wi-fi 连接开始您的活动时,尝试添加广播接收器并监听网络变化。像这样的解决方案

public class ConnectivityReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

                ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
                NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
                NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
                if (((null != wifi)&&(wifi.isAvailable())) || ((null != mobile)&&(mobile.isAvailable()))){
                    Intent uplIntent = new Intent(context, YourActivity.class);
                    uplIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    context.startActivity(uplIntent);
                }

    }
}

并添加到清单

    <receiver android:name=".receiver.ConnectivityReceiver">
        <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
    </receiver>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
于 2013-02-26T12:06:07.440 回答
0

我能想象的是这样的onPause()方法的覆盖:

@Override
public void onPause() {
    String conn_context = Context.WIFI_SERVICE;
    final WifiManager wifi = (WifiManager) getSystemService(conn_context);
    if (wifi.isWifiEnabled())
    {
      super.onResume();
    }
    else
    {
      super.onPause(); 
    }
}

但是您还必须想办法处理真正的 onPause 事件。

于 2013-02-26T12:12:10.337 回答
0

也许可以使用 Play Store 中的 Tasker 应用程序(虽然不是免费的)。或者您可以创建一个服务(http://developer.android.com/guide/components/services.html),该服务将在其他答案中列出代码,然后在 wifi 可用时启动您的应用程序(活动)。

于 2013-02-26T12:21:26.560 回答