繁体   English   中英

当 Android Studio API 30 中没有互联网连接时,将用户带到离线活动屏幕

[英]Take user to offline activity screen when no internet connection in Android Studio API 30

以编程方式将我的用户重定向到另一个活动的最佳方法是什么? 我研究的大多数代码都使用了已弃用的资源,有些代码不再起作用,它们也只能在单击按钮时起作用?

我怎样才能使当用户到达我的启动屏幕时,如果系统检测到他们没有连接到互联网,它会自动重定向到我指定的活动。

注意:这不是重复资源我在 Stackoverflow 上查看了其他资源,其中许多只谈论如何检查连接,那些在 API 30 中系统检查互联网未连接时进行重定向的人呢?

我试过这个不是自动的,它只适用于按钮点击

  signupBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            android.net.NetworkInfo wifi = cm
                    .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
            android.net.NetworkInfo datac = cm
                    .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            if ((wifi != null & datac != null)
                    && (wifi.isConnected() | datac.isConnected())) {
                Intent i = new Intent(StudentAppActivity.this, RegisterActivity.class);
                startActivity(i);
            }else{
                //no connection
                Intent i = new Intent(StudentAppActivity.this, Splash.class);
                startActivity(i);
            }
        }
    });

我对这段代码的问题是,假设用户第一次在没有互联网的情况下启动我的应用程序,当他们点击我在此处指定的那个按钮时,应用程序崩溃了,但是当他们打开数据并打开应用程序时,然后将其关闭并单击按钮,代码重定向良好,但假设用户从朋友那里获取应用程序,打开它没有数据并单击按钮,然后应用程序崩溃,这将产生糟糕的用户体验

在 API 30 中实现这一目标的准确方法是什么?

您可以使用ConnectivityManager检查用户是否可以访问互联网。

代码示例:

boolean isConnectedToInternet() {

ConnectivityManager cm =
        (ConnectivityManager)SplashScreenActivity.this.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
boolean isConnected = activeNetwork != null &&
                      activeNetwork.isConnectedOrConnecting();


return isConnected;

}

然后您可以检查来自onCreate()的连接以将用户发送到另一个屏幕:

if (isConnectedToInternet()) {
   // user is connected to the internet
}else {
   // user is not connected to the internet
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM