我有一个应用程序,它具有从服务启动的前台通知。
该服务每秒调用一个用作GPS连接的类。
GPS课程使用NETWORK_PROVIDER
和GPS_PROVIDER
。
到目前为止,所有工作都是正确的,除非今天发生了事情。
在某些时候,Android系统显示的信息类似于"除非您连接到wifi网络或移动网络,否则您将无法访问电子邮件和互联网"。 我不记得这条消息,但我有2个按钮:"取消"和"好的"。 从口袋里拿出手机时,我可能已经点击了一些东西。
在此消息的顶部是另一条消息,说我的应用程序不幸崩溃了。 所以事件的顺序似乎是这样的:网络禁用(?),应用程序崩溃。
我认为我需要以某种方式处理网络错误,但我现在无能为力,因为我无法从错误中获取更多信息。
有什么想法吗?
由于
答案 0 :(得分: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" />
<强>更新强>
&#34; GPS有一个网络状态监听器,我认为应该使用它,但我也无法测试。&#34;
您可以通过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);
答案 1 :(得分:0)
你可以处理 IOException &amp;的的UnknownHostException 强>
try
{
------------code------------
}
catch(IOException e)
{
e.printStackTrace();
}
catch(UnknownHostException e)
{
e.printStackTrace();
}