我已经有了这个代码来监听连接变化 -
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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我使用此代码检查Internet连接 - Internet Check
但问题是,如果网络在没有任何连接变化的情况下突然失去互联网连接,则此代码无用.有没有办法为Internet连接更改创建Broadcast Receiver侦听器?我有一个Web应用程序,突然的Internet连接更改可能会导致问题.
上个月的地理编码器每次因"grpc失败"错误而开始失败,我似乎无法解决它.我看过java.io.IOException:grpc失败但它并没有真正解决问题.
例如代码
Geocoder geocoder = new Geocoder(context, Locale.getDefault());
addresses = geocoder.getFromLocation(lat, lng, 1); // Here if fails with "grpc failed"
Run Code Online (Sandbox Code Playgroud)
我已经使用了相同的代码多年,但最近它在我重新编译应用程序并在模拟器或真实设备上进行测试时已停止工作.
如果我针对SDK 25进行编译,使用构建工具25,它可以在具有SDK 25的模拟器上运行.但是如果我尝试使用SDK 24,26或任何其他SDK版本的模拟器,它将失败并显示"grpc failed".我试图创建一个新的虚拟设备等,但同样的问题.
我不知道如何解决它以及问题是什么.
当前设置:targetSDK/compileSDK 25,构建工具25.0.3,Android Studio 2.3.3,常规模拟器.(我尝试过其他构建工具和SDK版本,但问题仍然存在)
有任何想法吗?