android - 如何在 splash android 上读取互联网状态

标签 android networking

我需要在启动时检测 Android 设备是否已连接或断开与互联网的连接...如果没有连接,应用程序将无法打开。我已经尝试了很多次。但我失败了。这是我的 splash 的源代码:

private Handler splashHandler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Runnable r = new Runnable(){
        public void run(){
            Intent brain = new Intent(Splash.this, MainMenu.class);
            startActivity(brain);
            finish();
        }
    };
    setContentView(R.layout.splashscreen);
    splashHandler.postDelayed(r, 2000);
}

public void onResume(Bundle savedInstanceState){
    super.onResume();
}

如果有人帮助我并给我一个源代码..告诉我我必须把它放在哪里..

最佳答案

来自这个 SO 帖子:Detect whether there is an Internet connection available on Android

您的代码应该如下所示:

private Handler splashHandler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Runnable r = new Runnable(){
        public void run(){
            Intent brain = new Intent(Splash.this, MainMenu.class);
            startActivity(brain);
            finish();
        }
    };
    setContentView(R.layout.splashscreen);
    if(isNetworkAvailable())
        splashHandler.postDelayed(r, 2000);
    else {
        //Notify user they aren't connected
        Toast.makeText(getApplicationContext(), "You aren't connected to the internet.", Toast.LENGTH_SHORT).show();
        //close the app
        finish();
    }
}

public void onResume(Bundle savedInstanceState){
    super.onResume();
}

private boolean isNetworkAvailable() {
    ConnectivityManager connectivityManager 
      = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
    return activeNetworkInfo != null;
}

如上面的链接所述,您还需要添加:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

到你的 AndroidManifest.xml 文件...

关于android - 如何在 splash android 上读取互联网状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11659536/

相关文章:

java:通过socket发送方法

Java网络发现

java - 用java流式传输音乐

Java TCP 客户端在 Eclipse 之外工作时无响应

android - 使用 Android Studio 重命名 Android 包名称

java - Viewholder 如何正确更新 View

Android - 调用 BroadcastReceiver 时是否实例化了应用程序类?

android - Gradle 构建异常

带有自定义适配器的 android listview 卡住 Activity

Android - 使用 while 循环停止线程