如何在 Kotlin 中通过 Context.getSystemService(Class) 获取实例

4
在Google Android Kotlin文档中,经常会出现以下这句话: 此类的实例必须使用Context.getSystemService(Class)获得 例如:

必须使用Context.getSystemService(Class)获取此类的实例,参数为 AppOpsManager.class 或使用Context.getSystemService(String)并将参数设置为 Context.APP_OPS_SERVICE。

请问有人可以解释一下这是什么以及如何创建AppOpsManager类的实例吗?
通常我们可以像这样创建实例: val use = AppOpsManager() 请帮忙解释一下上面的Context.getSystemService()
谢谢。
3个回答

9

来自Android开发者文档

AppOpsManager

用于与“应用操作”跟踪交互的API。

此API通常不面向第三方应用程序开发人员;大多数功能仅适用于系统应用程序。

必须使用Context.getSystemService(Class)和参数AppOpsManager.classContext.getSystemService(String)和参数Context.APP_OPS_SERVICE获取此类的实例。

要创建此类的实例,您必须从上下文实例使用getSystemService

val appOpsManager: AppOpsManager? = getSystemService(Context.APP_OPS_SERVICE) as AppOpsManager?

如果您的minSdkVersion为23,则可以使用以下代码。
val appOpsManager: AppOpsManager? = getSystemService(AppOpsManager::class.java)

尽管文档中说getSystemService(Class<T> serviceClass)是在API 23级中添加的,但只要您的targetSdkVersion为23或更高版本,它实际上可以在旧版Android中运行。 - Cristan
我无法确认Cristian所写的内容,当使用基于类的变体且minSdkVersion < 23时,Android Studio会显示错误消息。 - Danilo Bargen

3
使用以下内容:
context.getSystemService(AppOpsManager::class.java)

0
val aom = getSystemService(context, AppOpsManager::class.java)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接