重置Android setNetworkPreference

重置Android setNetworkPreference,android,Android,我有一个应用程序,它提供一项服务,可以跟踪我的位置,并在我进出房子的某个范围时触发插座连接。我遇到的问题主要是当我在家里,开始服务,然后开车离开我的房子。在我家时,我的手机连接到我的wifi。我的手机仍在意识到wifi超出范围,并在我到达附近时切换到手机。当套接字连接被触发时,我的手机没有可用的数据,因此无法执行它应该执行的操作 我想出的一个补救办法是在服务启动时将网络首选项设置为mobile,这是我的代码 public int onStartCommand(Intent intent,

我有一个应用程序,它提供一项服务,可以跟踪我的位置,并在我进出房子的某个范围时触发插座连接。我遇到的问题主要是当我在家里,开始服务,然后开车离开我的房子。在我家时,我的手机连接到我的wifi。我的手机仍在意识到wifi超出范围,并在我到达附近时切换到手机。当套接字连接被触发时,我的手机没有可用的数据,因此无法执行它应该执行的操作

我想出的一个补救办法是在服务启动时将网络首选项设置为mobile,这是我的代码

    public int onStartCommand(Intent intent, int flags, int reqId) {
            cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
            cm.setNetworkPreference(ConnectivityManager.TYPE_MOBILE);
            //my gps tracking and socket connection code, stopSelf(); gets called in here
    }
然后

    public void onDestroy() {
            super.onDestroy();
            cm.setNetworkPreference(ConnectivityManager.DEFAULT_NETWORK_PREFERENCE);
            //other code: gps cancel, wakelock release, etc
    }
此代码强制我的手机立即移动,这样当我的距离触发套接字连接时,它就有了移动连接。此代码的问题在于
ondestory
cm.setNetworkPreference(ConnectivityManager.DEFAULT\u NETWORK\u PREFERENCE)
将我的手机设置回wifi,但wifi不再可用,因此我的手机无法连接任何东西

有没有一种方法可以让我的手机返回到默认状态,即wifi(如果可用)和mobile(如果不可用)?谢谢。

这可能会对你有所帮助