我有一个应用程序,它有一个从服务启动的前台通知。
该服务每秒调用一个用作 GPS 连接的类。
GPS 类使用 NETWORK_PROVIDER
和 GPS_PROVIDER
。
到目前为止一切正常,除了今天,直到发生了一些事情。
Android 系统有时会显示一条消息,内容类似“除非您连接到 wifi 网络或移动网络,否则您将无法访问电子邮件和互联网”。 我不太记得消息,但我有 2 个按钮:“取消”和“确定”。 从口袋里掏出手机时,我可能点击了什么。
在此消息之上是另一条消息,说我的应用不幸崩溃了。 所以事件的顺序似乎是这样的:网络禁用(?),应用程序崩溃。
我认为我需要以某种方式处理网络错误,但我现在一无所知,因为我无法从错误中获得太多信息。
有什么想法吗?
谢谢
最佳答案
您可以使用 ConnectivityManager
访问系统服务,然后使用 NetworkInfo
类获取您的网络连接状态,
检查网络是否可用的方法,
private boolean isNetworkAvailable() {
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
boolean isAvailable = false;
if (networkInfo != null && networkInfo.isConnected()) {
isAvailable = true;
}
return isAvailable;
}
如果网络可用且已连接,则仅继续执行应用程序。否则退出应用程序,显示正确的错误消息。
// Check if Internet is connected
if (isNetworkAvailable()) {
// Execution here
}
else {
// Error message here if network is unavailable.
Toast.makeText(this, "Network is unavailable!", Toast.LENGTH_LONG).show();
}
不要忘记授予您的应用访问网络状态的权限,
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
更新:
“GPS 有一个网络状态监听器,我认为应该使用它,但我也无法测试它。”
您可以通过这种方式从 LocationManager
检查您的网络状态,
// Declaring a Location Manager
protected LocationManager mLocationManager;
boolean isNetworkEnabled = false;
boolean isGPSEnabled = false;
// Getting network status
isNetworkEnabled = mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
如果你想获取GPS状态,
// Getting GPS status
isGPSEnabled = mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
关于java - 防止网络不可用时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27796001/