我有一项服务,特别是安卓白日梦DreamService,我已经在AndroidManifest.xml文件中声明了这一服务。当我的应用程序加载时,Android会检测到这个声明,并将我的应用程序添加到用户可以在“设置”中选择的“白日梦”列表中。我声明这个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列出,甚至不知道我的应用程序的“白日梦”功能,除非我以编程方式启用它。
是有可能的吗?
发布于 2014-08-25 22:52:35
这样的事有可能吗?
是的,即使没有粗体的脸。:-)
PackageManager来切换组件是否启用。在清单中使用android:enabled属性来指示它的起始状态,其中总的默认情况是启用它。
因此,您可以在您的android:enabled="false"组件上添加.daydream.DaydreamService,以便最初禁用它,然后在以后需要时使用setComponentEnabledSetting()来启用它。
发布于 2014-08-26 15:32:35
还可以将组件设置为在资源的其他地方声明的布尔值:
<service ...
android:enabled="@bool/ENABLE_SERVICE">然后,可以在某些配置中将ENABLE_SERVICE设置为true,但在其他配置中设置为false (例如,如果您只希望在电话大小的屏幕上提供服务,而不希望在平板大小的屏幕上使用该服务)。
https://stackoverflow.com/questions/25495497
复制相似问题