How to solve WorkManager is not initialized properly error?

32 Views Asked by At

The project in which currently I am working have been using targetSDK = 30 & compileSDK=30. I upgraded *targetSDK=33, Now I need to add android:exported="true or false" in each activity and I have added. but when I run Nothing screen shows blank screeen and goes into infinite look throwing error

Instance creation error : could not create instance for [Factory:'androidx.work.WorkManager']: java.lang.IllegalStateException: WorkManager is not initialized properly. You have explicitly disabled WorkManagerInitializer in your manifest, have not manually called WorkManager#initialize at this point, and your Application does not implement Configuration.Provider. androidx.work.impl.WorkManagerImpl.getInstance(WorkManagerImpl.java:156) androidx.work.WorkManager.getInstance(WorkManager.java:184) org.catrobat.catroid.koin.CatroidKoinHelperKt$componentsModules$1$3.invoke(CatroidKoinHelper.kt:69)

Code of CatroidKoinHelper.kt is

val componentsModules = module(createdAtStart = true, override = false) {
    single {
        Room.databaseBuilder(androidContext(), AppDatabase::class.java, "app_database")
            .addMigrations(DatabaseMigrations.MIGRATION_1_2)
            .build()
    }
    single { CatroidWebServer.getWebService("https://share.catrob.at/api/") }
    factory { WorkManager.getInstance(androidContext()) } //Error was because of this line
    single { ProjectManager(androidContext()) }
    single { NetworkConnectionMonitor(androidContext()) }
    factory { HuaweiApiAvailability.getInstance() }
    factory { GoogleApiAvailability.getInstance() }
    factory { MobileServiceAvailability(get(), get()) }

    single { BackpackListManager.getInstance() }
    single {
        DefaultFeaturedProjectSync(get(), get(), get()) as FeaturedProjectsSync
    }

    single {
        DefaultProjectsCategoriesSync(get(), get(), get()) as ProjectsCategoriesSync
    }
}

error was because of this line factory { WorkManager.getInstance(androidContext()) }

Temporary Solution: I searched in stackoverflow and added following snippet in my AndroidManifest.xml file

        <provider
            android:name="androidx.work.impl.WorkManagerInitializer"
            android:authorities="${applicationId}.workmanager-init"
            android:exported="false">
        </provider>

But now when I build my app then shows following errors

Work [ id=e78c5f3e-2b24-4556-a702-94278f8eb4c5, tags={ org.catrobat.catroid.sync.ProjectsCategoriesSyncWorker } ] failed because it threw an exception/error java.util.concurrent.ExecutionException: java.net.SocketTimeoutException: timeout at androidx.work.impl.utils.futures.AbstractFuture.getDoneValue(AbstractFuture.java:516) at androidx.work.impl.utils.futures.AbstractFuture.get(AbstractFuture.java:475) at androidx.work.impl.WorkerWrapper$2.run(WorkerWrapper.java:300) at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:91) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:923) Caused by: java.net.SocketTimeoutException: timeout at okhttp3.internal.http2.Http2Stream$StreamTimeout.newTimeoutException(Http2Stream.java:678) at okhttp3.internal.http2.Http2Stream$StreamTimeout.exitAndThrowIfTimedOut(Http2Stream.java:686) at okhttp3.internal.http2.Http2Stream.takeHeaders(Http2Stream.java:154) at okhttp3.internal.http2.Http2ExchangeCodec.readResponseHeaders(Http2ExchangeCodec.java:136) at okhttp3.internal.connection.Exchange.readResponseHeaders(Exchange.java:115) at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.java:94) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:43) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:94) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:88) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at org.catrobat.catroid.retrofit.ErrorInterceptor.intercept(ErrorInterceptor.kt:33) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at org.catrobat.catroid.retrofit.CatroidWebServer$Companion$getWebService$okHttpClient$1.intercept(RetrofitWebServer.kt:71) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:142) at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:117) at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:229) at okhttp3.RealCall.execute(RealCall.java:81) at retrofit2.OkHttpCall.execute(OkHttpCall.java:204)

0

There are 0 best solutions below