У меня есть приложение, использующее подключение к Интернету, но при отсутствии доступа к Интернету приложение перестает отвечать. Может ли кто-нибудь помочь в решении этой проблемы. То, что я думал, что я могу показать ошибку, когда нет доступа к интернету, но я не знаю, как это сделать.
Проверьте мой класс HTTPclass.java, как я это сделал, у меня есть метод connect (url), который берет строку url и связывает ее, если соединение получено, оно отвечает и дает responseCode = 200
или HTTP.OK
, и если соединение не подключено. Я обрабатываю блок catch и устанавливаю responseCode = -1
что означает, что он не подключен.
Таким образом, вы можете сделать что-то подобное. Когда responseecode является -1, вы можете показать сообщение "Интернет не подключен".
public class HTTPClass
{
private static int responseCode = -1;
private static HttpURLConnection httpconn = null;
private static URLConnection conn = null;
private static URL urlobj;
public static int connect(String url) throws IOException
{
try
{
urlobj = new URL(url);
conn = urlobj.openConnection();
httpconn= (HttpURLConnection)conn;
httpconn.setConnectTimeout(5000);
httpconn.setDoInput(true);
}
catch(Exception e)
{
e.printStackTrace();
}
try
{
responseCode = httpconn.getResponseCode();
}
catch(Exception e)
{
responseCode = -1;
e.printStackTrace();
}
return responseCode;
}
}
Требуемое разрешение:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
Проверьте подключение к Интернету для каждого запроса
public boolean isOnline() {
NetworkInfo netInfo = connectivityManager.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
Использовать выше метод как
if(isOnline()) {
//Write code of request
} else {
showDialog("Internet connection error", "Connection is not available.")
}
Показать диалоговый метод
private void showDialog(String title, String text) {
// Access denied. Show dialogue to user
AlertDialog.Builder alertbox = new AlertDialog.Builder(YOUR_ACTIVITY.this);
alertbox.setTitle(title);
alertbox.setIcon(android.R.drawable.ic_dialog_info);
alertbox.setMessage(text);
alertbox.setNeutralButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
//finish(); //DO nothing
}
});
alertbox.show();
}
Отредактировано: Замените YOUR_ACTIVITY.this с именем деятельности, в котором вы используете этот код.
Вы можете показать AlertDialog, чтобы показать пользователю, что нет подключения к Интернету. Если ваше приложение не может работать без подключения, после нажатия кнопки отмены в AlertDialog вы можете завершить свою деятельность и закрыть приложение.