android - 在 AndroidManifest 中有条件地声明服务

标签 android service manifest dreamservice daydream

我有一项服务,特别是 Android Daydream DreamService,我已在我的 AndroidManifest.xml 文件中声明。当我的应用程序加载时,Android 检测到此声明并将我的应用程序作为一个选项添加到用户可以在其设置中选择的 Daydreams 列表中。我声明此 Service 如下...

<service android:name=".daydream.DaydreamService" android:exported="true"
        android:icon="@drawable/icon" android:label="@string/app_name" >
   <intent-filter>
        <action android:name="android.service.dreams.DreamService" />
        <category android:name="android.intent.category.DEFAULT" />
   </intent-filter>

   <meta-data
        android:name="android.service.dream"
        android:resource="@xml/daydream" />

</service>

我正在尝试查看是否有一种方法可以有条件地以编程方式加载此 Service 声明。换句话说,我只想根据一些编程逻辑声明这个DreamService。我不希望 Android 列出甚至意识到我应用的 Daydream 功能,除非我以编程方式启用它。

这样的事情可能吗?

最佳答案

Is something like this possible?

是的,即使没有黑体字也是如此。 :-)

Call setComponentEnabledSetting() on PackageManager切换组件是否启用。使用 list 中的 android:enabled 属性来指示其启动状态,其中整体默认为已启用。

因此,您可以在 .daydream.DaydreamService 组件上添加 android:enabled="false" 以使其最初被禁用,然后使用 setComponentEnabledSetting( ) 以便稍后根据需要启用它。

关于android - 在 AndroidManifest 中有条件地声明服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25495497/

相关文章:

Android 6.0 Marshmallow BLE 连接问题

java - RecyclerView 不显示任何数据

java - android "use $ instead of ."生成无法解析符号

documentation - 如何为客户端记录 Web 服务

powershell - `PowerShellVersion` 和 `PowerShellHostVersion` 之间的区别

java - 第一次打开入职屏幕应该是 list 上的.LAUNCHER?

android - 如何禁用阴影操作栏(android 5.0)?

android - 什么时候应该调用 super.onResume()?

delphi - Delphi中同一个程序拥有多个NT服务

java - 关于Android Service生命周期的一些问题