我一直在摆弄Android开发,我在尝试检查是否存在ACTIVE 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; }
}
答案 0 :(得分:0)
尝试以下代码
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();
}
}
});
}
也不要忘记在清单文件中添加互联网权限。