Facing Issues insert ContentProvider in AppModule.
My app level Module is
module {
single { TinyDB.getInstance(get()) }
single { DataRepository(get()) }
viewModel { HomeViewModel(get()) }
}
I have no idea how to use ContentProvider in Module
I have tried Code
val dataRepo = inject(DataRepository::class.java)
this in my Content provider but after this my app start crashes and logcat show Error Massage
java.lang.RuntimeException: Unable to get provider wastickerapps.newemojistickers.stickersforwhatsapp.whatsappUsages.StickerContentProvider: java.lang.IllegalStateException: StandAloneContext Koin instance is null
at android.app.ActivityThread.installProvider(ActivityThread.java:5562)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:5154)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5094)
at android.app.ActivityThread.access$1600(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1509)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5942)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
Caused by: java.lang.IllegalStateException: StandAloneContext Koin instance is null
at org.koin.standalone.StandAloneContext.getKoin(StandAloneContext.kt:68)
at org.koin.standalone.KoinComponentKt.getKoinContext(KoinComponent.kt:42)
at org.koin.standalone.KoinComponentKt.access$getKoinContext(KoinComponent.kt:1)
at org.koin.standalone.KoinComponent$DefaultImpls.getKoin(KoinComponent.kt:36)
at wastickerapps.newemojistickers.stickersforwhatsapp.whatsappUsages.StickerContentProvider.getKoin(StickerContentProvider.kt:27)
at wastickerapps.newemojistickers.stickersforwhatsapp.whatsappUsages.StickerContentProvider.<init>(StickerContentProvider.kt:481)
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.Class.newInstance(Class.java:1650)
at android.app.ActivityThread.installProvider(ActivityThread.java:5547)
at android.app.ActivityThread.installContentProviders(ActivityThread.java:5154)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5094)
at android.app.ActivityThread.access$1600(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1509)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5942)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at
Content Provider Initialise Before onCreate() method in Application() class,I have called startKoin from attachBaseContext() method in Application() class implement KoinComponent in my ContentProvider class and inject data repository in ContentProvider using this
var dataRepo = inject<DataRepository>()
Here is the code for inject
inline fun <reified T : Any> inject(name: String = "", scope: Scope? =
null, noinline parameters: ParameterDefinition =
emptyParameterDefinition()) = lazy { get<T>(name, scope, parameters) }
inline fun <reified T : Any> get(name: String = "", scope: Scope? =
null, noinline parameters: ParameterDefinition = e .
mptyParameterDefinition()): T = getKoin().get(name, scope, parameters)
//
fun getKoin(): KoinContext =
(org.koin.standalone.StandAloneContext.koinContext as KoinContext)