[英]Checking if there is an ACTIVE Internet Connection
我一直在摆弄Android开发,即使在网络打开的情况下,尝试检查是否存在活动的Internet连接也遇到了一些麻烦。
因为有时即使您已连接到WIFI或DATA,但有时还是无法连接。
每次单击按钮,我的应用程序都会崩溃。 关于布尔方法,我还是一个菜鸟。
谢谢您的任何提前帮助,如果你们想到我可以采用的更好的方法,我将不胜感激:D
这是我的主要活动:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnCheck = (Button) findViewById(R.id.btnCheck);
btnCheck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isInternetAvailable()){
Toast.makeText(MainActivity.this, "There is a connection", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(MainActivity.this, "NO connection", Toast.LENGTH_SHORT).show();
}
}
});
}
public boolean isInternetAvailable() {
try {
int timeoutMs = 1500;
Socket sock = new Socket();
SocketAddress sockaddr = new InetSocketAddress("8.8.8.8", 80);
sock.connect(sockaddr, timeoutMs);
sock.close();
return true;
} catch (IOException e) { return false; }
}
尝试下面的代码
Boolean isInternetPresent = false;
ConnectionDetector cd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnCheck = (Button) findViewById(R.id.btnCheck);
btnCheck.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cd = new ConnectionDetector(getApplicationContext());
isInternetPresent = cd.isConnectingToInternet();
if (isInternetPresent) {
Toast.makeText(MainActivity.this, "There is a connection", Toast.LENGTH_SHORT).show();
}else {
Toast.makeText(MainActivity.this, "NO connection", Toast.LENGTH_SHORT).show();
}
}
});
}
也不要忘记在清单文件中添加Internet权限。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.