在 AndroidManifest 中有条件地声明服务

Bri*_*ian 2 service android 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>
Run Code Online (Sandbox Code Playgroud)

我想看看是否有一种方法可以有条件地以Service编程方式加载此声明。换句话说,我只想根据一些程序逻辑来声明这一点DreamService。我不希望 Android 列出或什至知道我的应用程序的 Daydream 功能,除非我以编程方式启用它。

这样的事情可能吗?

Com*_*are 6

这样的事情可能吗?

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

呼叫setComponentEnabledSetting()PackageManager要切换组件是否被启用。使用android:enabled清单中的属性来指示其起始状态,其中总体默认为启用状态。

所以,你可以添加android:enabled="false"你对.daydream.DaydreamService组件有它最初被禁用,则使用setComponentEnabledSetting()以后根据需要启用它。