I am learning Android and I am following some guides for Retrofit2 with RxJava and Dagger2. Now I want to handle no internet connection case. I've found this answer, which seems to be elegant, but I do not understand how to apply it.
I've got some NetworkModule
, with OkHttpClient
provider.
I assume I need to create OkHttpClient.Builder
with interceptor. So it should look something like this: `
@Provides
@Singleton
OkHttpClient provideOkHttpClient(Cache cache) {
ConnectivityInterceptor ci = new ConnectivityInterceptor(networkObservable()));
OkHttpClient.Builder.addInterceptor(ci)
return builder.build();
}
private boolean networkObservable() {
ConnectivityManager cm =
(ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
}
This isn't working as I don't have Context
.
In which direction should I go - to try to obtain context there, or maybe I misunderstand the concept of observables?
You can provide application Context in your DaggerModule. Or in case you need activity context you can created module which accept Context in constructor. Then build component in your activity and inject into it.
Application class: