我正在开发一个Android应用程序,该应用程序将继续保持与Internet的连接。如果互联网是陶氏的,则应向用户提供适当的消息。
有没有像Internet Listener这样的东西?或如何实施此事件,以便每当没有Internet连接时都应发出警报。
为此创建一个广播接收器,并将其注册到清单文件中。
首先创建一个新类NetworkStateReceiver
并扩展BroadcastReceiver。
public class NetworkStateReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Log.d("app","Network connectivity change");
if(intent.getExtras()!=null) {
NetworkInfo ni=(NetworkInfo) intent.getExtras().get(ConnectivityManager.EXTRA_NETWORK_INFO);
if(ni!=null && ni.getState()==NetworkInfo.State.CONNECTED) {
Log.i("app","Network "+ni.getTypeName()+" connected");
}
}
if(intent.getExtras().getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY,Boolean.FALSE)) {
Log.d("app","There's no network connectivity");
}
}
}
将此代码放在“ application”元素下的AndroidManifest.xml中:
<receiver android:name=".NetworkStateReceiver">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
并添加此权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
编辑
此代码仅检测连接性变化,但无法判断其连接的网络是否可以访问互联网。使用此方法检查-
public static boolean hasActiveInternetConnection(Context context) {
if (isNetworkAvailable(context)) {
try {
HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection());
urlc.setRequestProperty("User-Agent", "Test");
urlc.setRequestProperty("Connection", "close");
urlc.setConnectTimeout(1500);
urlc.connect();
return (urlc.getResponseCode() == 200);
} catch (IOException e) {
Log.e(LOG_TAG, "Error checking internet connection", e);
}
} else {
Log.d(LOG_TAG, "No network available!");
}
return false;
}
问题内容: 我已经有了这段侦听连接性更改的代码- 我使用此代码检查连接- 但是问题是,如果网络突然失去了互联网连接而没有任何连接更改,则此代码将无用。有什么方法可以创建广播接收器侦听器以更改Internet连接吗?我有一个Web应用程序,突然的Internet连接更改会引起问题。 问题答案: 尝试这个 对于广播接收器 不要忘记将其放入你的AndroidManifest.xml 希望这会为你加油!
我已经有了监听连接变化的代码- 我用这个代码检查互联网连接——互联网检查 但问题是,如果网络突然失去互联网连接,而没有任何连接变化,这个代码是无用的。是否有任何方法来创建广播接收器侦听器为互联网连接的变化?我有一个网络应用程序,突然的互联网连接变化会导致问题。
问题内容: 我想检查Android手机的网络何时关闭。我可以捕获该事件吗? 我没有得到正确的API或任何可以解释相同内容的示例。如果有人做过或有任何示例链接将非常有帮助。 问题答案: 新的Java类: 你的AndroidManifest.xml中“ manifest”元素下的新xml: 你的AndroidManifest.xml中“ application”元素下的新xml:
问题内容: 我想将Listener放在上。我寻找信息,它是这样的: 问题在于Eclipse认为它是的,并且不起作用。我怎样才能解决这个问题? 问题答案: 你可以这样做:
它运行良好,突然它开始显示我“连接没有互联网”我没有做任何改变我的路由器。同一台笔记本电脑。 这是我目前所尝试的: -检查更新 -重启/关机笔记本电脑 -删除模拟器并添加新模拟器 -和 -从中删除文件夹 -模拟器扩展控件->设置->代理->手动代理配置+主机名 谢谢 编辑:我看过几个类似的问题,到目前为止还没有解决。我仍然使用上面的命令来打开仿真程序,并强制它使用8.8.8.8,这样它就可以有一个
我在mac OS HS 10.13.4上直接连接到我的路由器,没有代理。 我甚至试着删除所有的AVD,重新安装它们。我甚至试着用奥利奥Android 8.1安装了最新的Pixel 2 似乎什么都不起作用。有人面对这个问题并找到解决办法吗?