首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AndroidManifest中有条件声明服务

在AndroidManifest中有条件声明服务
EN

Stack Overflow用户
提问于 2014-08-25 22:50:12
回答 2查看 2.8K关注 0票数 2

我有一项服务,特别是安卓白日梦DreamService,我已经在AndroidManifest.xml文件中声明了这一服务。当我的应用程序加载时,Android会检测到这个声明,并将我的应用程序添加到用户可以在“设置”中选择的“白日梦”列表中。我声明这个Service如下..。

代码语言:javascript
复制
<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列出,甚至不知道我的应用程序的“白日梦”功能,除非我以编程方式启用它。

是有可能的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-25 22:52:35

这样的事有可能吗?

是的,即使没有粗体的脸。:-)

PackageManager来切换组件是否启用。在清单中使用android:enabled属性来指示它的起始状态,其中总的默认情况是启用它。

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

票数 6
EN

Stack Overflow用户

发布于 2014-08-26 15:32:35

还可以将组件设置为在资源的其他地方声明的布尔值:

代码语言:javascript
复制
<service ...
   android:enabled="@bool/ENABLE_SERVICE">

然后,可以在某些配置中将ENABLE_SERVICE设置为true,但在其他配置中设置为false (例如,如果您只希望在电话大小的屏幕上提供服务,而不希望在平板大小的屏幕上使用该服务)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25495497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档