如何在网络找到时自动将我的Android应用程序连接到Internet

问题描述 投票:1回答:3

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

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

android
3个回答
2
投票

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

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

有关广播接收器,请参阅以下代码。

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();
            }
        }
    };
}

0
投票

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

以下是一些可以参考的链接。

http://www.tutorialspoint.com/android/android_services.htm

http://www.vogella.com/tutorials/AndroidServices/article.html


0
投票

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

NetworkInfo i = conMgr.getActiveNetworkInfo();
  if (i == null)
    return false;
  if (!i.isConnected())
    return false;
  if (!i.isAvailable())
    return false;
  return true;
© www.soinside.com 2019 - 2024. All rights reserved.