android:enable and services

守給你的承諾、 提交于 2019-11-29 23:59:53

New SAF(Storage Access Framework) is a good example of use of android:enabled attribute. http://developer.android.com/guide/topics/providers/document-provider.html

The android:enabled attribute set to a boolean value defined in a resource file. The purpose of this attribute is to disable the provider on devices running Android 4.3 or lower. For example,

android:enabled="@bool/atLeastKitKat" 

In addition to including this attribute in the manifest, you need to do the following: In your bool.xml resources file under res/values/, add this line:

<bool name="atLeastKitKat">false</bool> 

In your bool.xml resources file under res/values-v19/, add this line:

<bool name="atLeastKitKat">true</bool>

setting the application enables as "false".

I know of no good reason for doing this.

I say that if we put service enable as false there is no way to call that service, so why we create that service in the first place?

Generally, that is true. android:enabled is, in effect, inherited for all components, so it is not unique to services. Here are scenarios where it might be used:

  • Activity: you want to have a second icon in the launcher, but only if the user purchases something through in-app purchasing (e.g., upgrades to "Pro" features)

  • BroadcastReceiver: you want to get control at boot time via ACTION_BOOT_COMPLETED, but you do not need that all of the time

  • Service and ContentProvider: you have a family of apps, where you only need (and want) one implementation of the service/content provider to be around, even if more than one app from your family are installed by the user

In these cases, you might have the component disabled (android:enabled="false") in the manifest, and use PackageManager and setComponentEnabledSetting() to conditionally enable them later on.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!