当前位置: 首页 > 知识库问答 >
问题:

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

姚海
2023-03-14

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

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

注意:这不是重复的资源,我已经检查了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中实现这一点的准确方法是什么?

共有1个答案

虞安康
2023-03-14

您可以使用ConnectivityManager检查用户是否可以访问Internet。

代码示例:

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
}
 类似资料:
  • 问题内容: 正在使用Spring,并且·具有以下定义: ..... 当我的互联网连接断开时,我无法通过tomcat或码头运行我的应用程序。 它给: 有什么建议如何解决吗? 问题答案: 如果正确配置了名称空间且XSD文件位于类路径中,则无需在schemaLocation URL中使用classpath:协议。 Spring doc“ 注册处理程序和模式 ”显示了应如何完成。 在你的情况下,问题可能出

  • 我有一个SpringBoot应用程序,它实现了一个Websocket服务器(SockJS)。 我可以在本地网络上将客户端连接到该服务器,只要托管该应用程序的Ubuntu机器可以访问互联网。 2016-10-27 11:22:20.802调试9390---[nio-8085-exec-9]o.a.coyote.http11.org.apache.tomcat.util.net.NioEndpoint

  • 我一直在尝试使用自定义图像,该图像将在用户离线时显示给用户,并且当用户单击图像时,应该重新加载活动。 P. s我正在使用Bloger API

  • Android我的设备与wifi连接,但如果wifi已连接,但这些没有互联网连接,该怎么做 以下是我尝试检查是否没有互联网连接的代码 当无法访问互联网时,它总是返回true

  • 我开Android Studio已经有一段时间了。直到今天都很好。今天android模拟器不能连接到互联网(用chrome浏览器和我在模拟器中的应用程序尝试),尽管它的wifi是连接的。怎么解决这个? 我已经试过了: null 模拟器wifi设置(自动ip/dhcp):Nexus 5s Api 28 IP地址:192.168.232.2 网关:192.168.232.1 子网掩码:255.255.