java.lang.Object | ||||
↳ | android.content.Context | |||
↳ | android.content.ContextWrapper | |||
↳ | android.app.Service | |||
↳ | android.location.SettingInjectorService |
Dynamically specifies the summary (subtitle) and enabled status of a preference injected into the list of app settings displayed by the system settings app
For use only by apps that are included in the system image, for preferences that affect multiple apps. Location settings that apply only to one app should be shown within that app, rather than in the system settings.
To add a preference to the list, a subclass of
SettingInjectorService
must be declared in
the manifest as so:
<service android:name="com.example.android.injector.MyInjectorService" > <intent-filter> <action android:name="android.location.SettingInjectorService" /> </intent-filter> <meta-data android:name="android.location.SettingInjectorService" android:resource="@xml/my_injected_location_setting" /> </service>The resource file specifies the static data for the setting:
<injected-location-setting xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/injected_setting_title" android:icon="@drawable/ic_acme_corp" android:settingsActivity="com.example.android.injector.MySettingActivity" />Here:
getTitle()
value. The title should make
it clear which apps are affected by the setting, typically by including the name of the
developer. For example, "Acme Corp. ads preferences."
getIcon()
value. Typically this will be a
generic icon for the developer rather than the icon for an individual app.
SettingInjectorService
. The activity should use your own branding to help emphasize
to the user that it is not part of the system settings.
onCreate()
,
onGetSummary()
, and
onGetEnabled()
methods must all be fast. If any are slow,
it can delay the display of settings values for other apps as well. Note further that all are
called on your app's UI thread.
For compactness, only one copy of a given setting should be injected. If each account has a
distinct value for the setting, then the
onGetSummary()
value should represent a summary
of the state across all of the accounts and
settingsActivity
should display the value for
each account.
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | ACTION_INJECTED_SETTING_CHANGED | Intent action a client should broadcast when the value of one of its injected settings has changed, so that the setting can be updated in the UI. | |||||||||
String | ACTION_SERVICE_INTENT | Intent action that must be declared in the manifest for the subclass. | |||||||||
String | ATTRIBUTES_NAME | Name of the XML tag that includes the attributes for the setting. | |||||||||
String | META_DATA_NAME | Name of the meta-data tag used to specify the resource file that includes the settings attributes. |
[Expand]
Inherited Constants
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
From class
android.app.Service
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
From class
android.content.Context
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
From interface
android.content.ComponentCallbacks2
|
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
Constructor.
|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
Return the communication channel to the service.
|
||||||||||
|
This method is deprecated.
Implement
onStartCommand(Intent, int, int)
instead.
|
||||||||||
|
Called by the system every time a client explicitly starts the service by calling
startService(Intent)
, providing the arguments it supplied and a
unique integer token representing the start request.
|
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
Returns the
isEnabled()
value.
|
||||||||||
|
Returns the
getSummary()
value (allowed to be null or
empty).
|
[Expand]
Inherited Methods
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
From class
android.app.Service
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
From class
android.content.ContextWrapper
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
From class
android.content.Context
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
From class
java.lang.Object
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
From interface
android.content.ComponentCallbacks
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
From interface
android.content.ComponentCallbacks2
|
Intent action a client should broadcast when the value of one of its injected settings has changed, so that the setting can be updated in the UI.
Intent action that must be declared in the manifest for the subclass. Used to start the service to read the dynamic status for the setting.
Name of the XML tag that includes the attributes for the setting.
Name of the meta-data tag used to specify the resource file that includes the settings attributes.
Constructor.
name | used to identify your subclass in log messages |
---|
Return the communication channel to the service. May return null if
clients can not bind to the service. The returned
IBinder
is usually for a complex interface
that has been
described using
aidl
.
Note that unlike other application components, calls on to the IBinder interface returned here may not happen on the main thread of the process . More information about the main thread can be found in Processes and Threads .
intent |
The Intent that was used to bind to this service,
as given to
Context.bindService
. Note that any extras that were included with
the Intent at that point will
not
be seen here.
|
---|
Called by the system every time a client explicitly starts the service by calling
startService(Intent)
, providing the arguments it supplied and a
unique integer token representing the start request. Do not call this method directly.
For backwards compatibility, the default implementation calls
onStart(Intent, int)
and returns either
START_STICKY
or
START_STICKY_COMPATIBILITY
.
If you need your application to run on platform versions prior to API
level 5, you can use the following model to handle the older
onStart(Intent, int)
callback in that case. The
handleCommand
method is implemented by
you as appropriate:
// This is the old onStart method that will be called on the pre-2.0 // platform. On 2.0 or later we override onStartCommand() so this // method will not be called. @Override public void onStart(Intent intent, int startId) { handleCommand(intent); } @Override public int onStartCommand(Intent intent, int flags, int startId) { handleCommand(intent); // We want this service to continue running until it is explicitly // stopped, so return sticky. return START_STICKY; }
Note that the system calls this on your
service's main thread. A service's main thread is the same
thread where UI operations take place for Activities running in the
same process. You should always avoid stalling the main
thread's event loop. When doing long-running operations,
network calls, or heavy disk I/O, you should kick off a new
thread, or use
AsyncTask
.
intent |
The Intent supplied to
startService(Intent)
,
as given. This may be null if the service is being restarted after
its process has gone away, and it had previously returned anything
except
START_STICKY_COMPATIBILITY
.
|
---|---|
flags |
Additional data about this start request. Currently either
0,
START_FLAG_REDELIVERY
, or
START_FLAG_RETRY
.
|
startId |
A unique integer representing this specific request to
start. Use with
stopSelfResult(int)
.
|
START_CONTINUATION_MASK
bits.
Returns the
isEnabled()
value. Should not perform
unpredictably-long operations such as network access--see the running-time comments in the
class-level javadoc.
Note that to prevent churn in the settings list, there is no support for dynamically choosing
to hide a setting. Instead you should have this method return false, which will disable the
setting and its link to your setting activity. One reason why you might choose to do this is
if
LOCATION_MODE
is
LOCATION_MODE_OFF
.
It is possible that the user may click on the setting before this method returns, so your
settings activity must handle the case where it is invoked even though the setting is
disabled. The simplest approach may be to simply call
finish()
when disabled.
isEnabled()
value
Returns the
getSummary()
value (allowed to be null or
empty). Should not perform unpredictably-long operations such as network access--see the
running-time comments in the class-level javadoc.
getSummary()
value