我正在使用 Hilt 依赖注入。我创建了一个 PermissionModule,一个单例组件,并添加了一个 PermisisonManager 作为 @Provides,而 PermissionManager 将上下文作为参数。 在 PermissionManager 中,我注入了一个构造函数以及一个上下文作为构造函数参数。
下面是我的代码片段: 权限模块:
@Module
@InstallIn(SingletonComponent::class)
interface PermissionsModule {
@Provides
@Singleton
@ApplicationScope
fun providesPermissionManager(
@ApplicationContext context: Context
): PermissionManager = PermissionManager(context)
}
权限管理器:
class PermissionManager @Inject constructor(
@ApplicationContext private val context: Context
) {
}
我是 Hilt 又名 DI 的新手,仍在学习并尝试在我最新的应用程序中使用它。
在查阅文档和Stackoverflow时,我发现参数不能通过。
我想知道如何将上下文传递给 PermissionManager 类?
非常感谢任何帮助。
谢谢你。
您需要从 DI 模块提供上下文。参考下面的代码。
注意:这里的 MainApplication 是您的应用程序类。
@Provides
@Singleton
fun providesMainApplication(@ApplicationContext context: Context): MainApplication {
return context as MainApplication
}
还将权限模块从接口更改为对象。
@Module
@InstallIn(SingletonComponent::class)
object PermissionsModule {
@Provides
@Singleton
@ApplicationScope
fun providesPermissionManager(
@ApplicationContext context: Context
): PermissionManager = PermissionManager(context)
}