Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在发现网络时自动将我的android应用程序连接到Internet_Android - Fatal编程技术网

如何在发现网络时自动将我的android应用程序连接到Internet

如何在发现网络时自动将我的android应用程序连接到Internet,android,Android,我的android应用程序基于网络连接,即WIFI/移动网络。当我的手机连接到互联网时,它工作正常,但当互联网连接断开时,它停止工作(Obeely),并且在我的手机再次连接到互联网后,它仍然停止工作 我希望在(重新)建立internet连接时自动(重新)启动我的应用程序。我认为您必须继续检查网络连接,这意味着您需要在后台任务中检查internet连接。安卓服务是更好的选择,创建一个服务并在应用程序启动时启动,在其中只需执行一个代码,用于检查互联网连接,当它丢失时,执行一些任务,当它发现你可以做任

我的android应用程序基于网络连接,即WIFI/移动网络。当我的手机连接到互联网时,它工作正常,但当互联网连接断开时,它停止工作(Obeely),并且在我的手机再次连接到互联网后,它仍然停止工作


我希望在(重新)建立internet连接时自动(重新)启动我的应用程序。

我认为您必须继续检查网络连接,这意味着您需要在后台任务中检查internet连接。安卓服务是更好的选择,创建一个服务并在应用程序启动时启动,在其中只需执行一个代码,用于检查互联网连接,当它丢失时,执行一些任务,当它发现你可以做任何你想做的事时。因此,我建议您使用服务并完成任务

这里有一些链接可供参考


我认为您应该在后台创建一个扩展线程服务,以便在一段时间后检查网络连接。在线程或服务中使用以下代码,无论您想创建什么

NetworkInfo i = conMgr.getActiveNetworkInfo();
  if (i == null)
    return false;
  if (!i.isConnected())
    return false;
  if (!i.isAvailable())
    return false;
  return true;

您可以使用广播接收器检查网络状态。只要网络可用,就可以启动应用程序

首先,创建一个后台服务,并在设备启动时启动服务。现在,在这个服务中,注册一个广播接收器并监视网络状态。如果网络可用,您可以启动应用程序;如果不可用,您可以将其关闭

请参考下面的广播接收器代码

public class BroadCastSampleActivity extends Activity
{
    /** Called when the activity is first created. */
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        this.registerReceiver(this.mConnReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
    }

    private BroadcastReceiver mConnReceiver = new BroadcastReceiver()
    {
        public void onReceive(Context context, Intent intent)
        {
            boolean noConnectivity = intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
            String reason = intent.getStringExtra(ConnectivityManager.EXTRA_REASON);
            boolean isFailover = intent.getBooleanExtra(ConnectivityManager.EXTRA_IS_FAILOVER, false);

            NetworkInfo currentNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
            NetworkInfo otherNetworkInfo = (NetworkInfo) intent.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);

            if(currentNetworkInfo.isConnected())
            {
                Toast.makeText(getApplicationContext(), "Connected", Toast.LENGTH_LONG).show();
            }
            else
            {
                Toast.makeText(getApplicationContext(), "Not Connected", Toast.LENGTH_LONG).show();
            }
        }
    };
}

你确定你会一直上网吗。。。?这难道不会使你的应用程序资源密集型吗…?同样使用广播接收器