我有一项服务,特别是 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/