Loading api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -35271,6 +35271,7 @@ package android.service.autofill { field public static final java.lang.String EXTRA_DATASET_EXTRAS = "android.service.autofill.extra.DATASET_EXTRAS"; field public static final java.lang.String EXTRA_RESPONSE_EXTRAS = "android.service.autofill.extra.RESPONSE_EXTRAS"; field public static final java.lang.String SERVICE_INTERFACE = "android.service.autofill.AutoFillService"; field public static final java.lang.String SERVICE_META_DATA = "android.autofill"; } public final class FillCallback { api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -38170,6 +38170,7 @@ package android.service.autofill { field public static final java.lang.String EXTRA_DATASET_EXTRAS = "android.service.autofill.extra.DATASET_EXTRAS"; field public static final java.lang.String EXTRA_RESPONSE_EXTRAS = "android.service.autofill.extra.RESPONSE_EXTRAS"; field public static final java.lang.String SERVICE_INTERFACE = "android.service.autofill.AutoFillService"; field public static final java.lang.String SERVICE_META_DATA = "android.autofill"; } public final class FillCallback { api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -35390,6 +35390,7 @@ package android.service.autofill { field public static final java.lang.String EXTRA_DATASET_EXTRAS = "android.service.autofill.extra.DATASET_EXTRAS"; field public static final java.lang.String EXTRA_RESPONSE_EXTRAS = "android.service.autofill.extra.RESPONSE_EXTRAS"; field public static final java.lang.String SERVICE_INTERFACE = "android.service.autofill.AutoFillService"; field public static final java.lang.String SERVICE_META_DATA = "android.autofill"; } public final class FillCallback { core/java/android/service/autofill/AutoFillService.java +13 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,19 @@ public abstract class AutoFillService extends Service { @SdkConstant(SdkConstant.SdkConstantType.SERVICE_ACTION) public static final String SERVICE_INTERFACE = "android.service.autofill.AutoFillService"; /** * Name under which a AutoFillService component publishes information about itself. * This meta-data should reference an XML resource containing a * <code><{@link * android.R.styleable#AutoFillService autofill-service}></code> tag. * This is a a sample XML file configuring an AutoFillService: * <pre> <autofill-service * android:settingsActivity="foo.bar.SettingsActivity" * . . . * /></pre> */ public static final String SERVICE_META_DATA = "android.autofill"; // Internal bundle keys. /** @hide */ public static final String KEY_CALLBACK = "callback"; /** @hide */ public static final String KEY_SAVABLE_IDS = "savable_ids"; Loading core/java/android/service/autofill/AutoFillServiceInfo.java +70 −8 Original line number Diff line number Diff line Loading @@ -16,20 +16,34 @@ package android.service.autofill; import android.Manifest; import android.annotation.Nullable; import android.app.AppGlobals; import android.content.ComponentName; import android.content.pm.PackageManager; import android.content.pm.ServiceInfo; import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.os.RemoteException; import android.util.AttributeSet; import android.util.Log; import android.util.Xml; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; /** @hide */ public final class AutoFillServiceInfo { static final String TAG = "AutoFillServiceInfo"; private static ServiceInfo getServiceInfoOrThrow(ComponentName comp, int userHandle) throws PackageManager.NameNotFoundException { try { final ServiceInfo si = AppGlobals.getPackageManager().getServiceInfo(comp, 0, userHandle); ServiceInfo si = AppGlobals.getPackageManager().getServiceInfo( comp, PackageManager.GET_META_DATA, userHandle); if (si != null) { return si; } Loading @@ -38,11 +52,21 @@ public final class AutoFillServiceInfo { throw new PackageManager.NameNotFoundException(comp.toString()); } @Nullable private String mParseError; @Nullable private ServiceInfo mServiceInfo; @Nullable private String mSettingsActivity; public AutoFillServiceInfo(PackageManager pm, ComponentName comp, int userHandle) throws PackageManager.NameNotFoundException { this(pm, getServiceInfoOrThrow(comp, userHandle)); } private AutoFillServiceInfo(ServiceInfo si) { public AutoFillServiceInfo(PackageManager pm, ServiceInfo si) throws PackageManager.NameNotFoundException{ if (si == null) { mParseError = "Service not available"; return; Loading @@ -53,19 +77,57 @@ public final class AutoFillServiceInfo { return; } mServiceInfo = si; XmlResourceParser parser = null; try { parser = si.loadXmlMetaData(pm, AutoFillService.SERVICE_META_DATA); if (parser == null) { mParseError = "No " + AutoFillService.SERVICE_META_DATA + " meta-data for " + si.packageName; return; } public AutoFillServiceInfo(ComponentName comp, int userHandle) throws PackageManager.NameNotFoundException { this(getServiceInfoOrThrow(comp, userHandle)); Resources res = pm.getResourcesForApplication(si.applicationInfo); AttributeSet attrs = Xml.asAttributeSet(parser); int type; while ((type=parser.next()) != XmlPullParser.END_DOCUMENT && type != XmlPullParser.START_TAG) { } String nodeName = parser.getName(); if (!"autofill-service".equals(nodeName)) { mParseError = "Meta-data does not start with autofill-service tag"; return; } TypedArray array = res.obtainAttributes(attrs, com.android.internal.R.styleable.AutoFillService); mSettingsActivity = array.getString( com.android.internal.R.styleable.AutoFillService_settingsActivity); array.recycle(); } catch (XmlPullParserException | IOException | PackageManager.NameNotFoundException e) { mParseError = "Error parsing auto fill service meta-data: " + e; Log.w(TAG, "error parsing auto fill service meta-data", e); return; } finally { if (parser != null) parser.close(); } mServiceInfo = si; } @Nullable public String getParseError() { return mParseError; } @Nullable public ServiceInfo getServiceInfo() { return mServiceInfo; } @Nullable public String getSettingsActivity() { return mSettingsActivity; } } Loading
api/current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -35271,6 +35271,7 @@ package android.service.autofill { field public static final java.lang.String EXTRA_DATASET_EXTRAS = "android.service.autofill.extra.DATASET_EXTRAS"; field public static final java.lang.String EXTRA_RESPONSE_EXTRAS = "android.service.autofill.extra.RESPONSE_EXTRAS"; field public static final java.lang.String SERVICE_INTERFACE = "android.service.autofill.AutoFillService"; field public static final java.lang.String SERVICE_META_DATA = "android.autofill"; } public final class FillCallback {
api/system-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -38170,6 +38170,7 @@ package android.service.autofill { field public static final java.lang.String EXTRA_DATASET_EXTRAS = "android.service.autofill.extra.DATASET_EXTRAS"; field public static final java.lang.String EXTRA_RESPONSE_EXTRAS = "android.service.autofill.extra.RESPONSE_EXTRAS"; field public static final java.lang.String SERVICE_INTERFACE = "android.service.autofill.AutoFillService"; field public static final java.lang.String SERVICE_META_DATA = "android.autofill"; } public final class FillCallback {
api/test-current.txt +1 −0 Original line number Diff line number Diff line Loading @@ -35390,6 +35390,7 @@ package android.service.autofill { field public static final java.lang.String EXTRA_DATASET_EXTRAS = "android.service.autofill.extra.DATASET_EXTRAS"; field public static final java.lang.String EXTRA_RESPONSE_EXTRAS = "android.service.autofill.extra.RESPONSE_EXTRAS"; field public static final java.lang.String SERVICE_INTERFACE = "android.service.autofill.AutoFillService"; field public static final java.lang.String SERVICE_META_DATA = "android.autofill"; } public final class FillCallback {
core/java/android/service/autofill/AutoFillService.java +13 −0 Original line number Diff line number Diff line Loading @@ -61,6 +61,19 @@ public abstract class AutoFillService extends Service { @SdkConstant(SdkConstant.SdkConstantType.SERVICE_ACTION) public static final String SERVICE_INTERFACE = "android.service.autofill.AutoFillService"; /** * Name under which a AutoFillService component publishes information about itself. * This meta-data should reference an XML resource containing a * <code><{@link * android.R.styleable#AutoFillService autofill-service}></code> tag. * This is a a sample XML file configuring an AutoFillService: * <pre> <autofill-service * android:settingsActivity="foo.bar.SettingsActivity" * . . . * /></pre> */ public static final String SERVICE_META_DATA = "android.autofill"; // Internal bundle keys. /** @hide */ public static final String KEY_CALLBACK = "callback"; /** @hide */ public static final String KEY_SAVABLE_IDS = "savable_ids"; Loading
core/java/android/service/autofill/AutoFillServiceInfo.java +70 −8 Original line number Diff line number Diff line Loading @@ -16,20 +16,34 @@ package android.service.autofill; import android.Manifest; import android.annotation.Nullable; import android.app.AppGlobals; import android.content.ComponentName; import android.content.pm.PackageManager; import android.content.pm.ServiceInfo; import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.os.RemoteException; import android.util.AttributeSet; import android.util.Log; import android.util.Xml; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; /** @hide */ public final class AutoFillServiceInfo { static final String TAG = "AutoFillServiceInfo"; private static ServiceInfo getServiceInfoOrThrow(ComponentName comp, int userHandle) throws PackageManager.NameNotFoundException { try { final ServiceInfo si = AppGlobals.getPackageManager().getServiceInfo(comp, 0, userHandle); ServiceInfo si = AppGlobals.getPackageManager().getServiceInfo( comp, PackageManager.GET_META_DATA, userHandle); if (si != null) { return si; } Loading @@ -38,11 +52,21 @@ public final class AutoFillServiceInfo { throw new PackageManager.NameNotFoundException(comp.toString()); } @Nullable private String mParseError; @Nullable private ServiceInfo mServiceInfo; @Nullable private String mSettingsActivity; public AutoFillServiceInfo(PackageManager pm, ComponentName comp, int userHandle) throws PackageManager.NameNotFoundException { this(pm, getServiceInfoOrThrow(comp, userHandle)); } private AutoFillServiceInfo(ServiceInfo si) { public AutoFillServiceInfo(PackageManager pm, ServiceInfo si) throws PackageManager.NameNotFoundException{ if (si == null) { mParseError = "Service not available"; return; Loading @@ -53,19 +77,57 @@ public final class AutoFillServiceInfo { return; } mServiceInfo = si; XmlResourceParser parser = null; try { parser = si.loadXmlMetaData(pm, AutoFillService.SERVICE_META_DATA); if (parser == null) { mParseError = "No " + AutoFillService.SERVICE_META_DATA + " meta-data for " + si.packageName; return; } public AutoFillServiceInfo(ComponentName comp, int userHandle) throws PackageManager.NameNotFoundException { this(getServiceInfoOrThrow(comp, userHandle)); Resources res = pm.getResourcesForApplication(si.applicationInfo); AttributeSet attrs = Xml.asAttributeSet(parser); int type; while ((type=parser.next()) != XmlPullParser.END_DOCUMENT && type != XmlPullParser.START_TAG) { } String nodeName = parser.getName(); if (!"autofill-service".equals(nodeName)) { mParseError = "Meta-data does not start with autofill-service tag"; return; } TypedArray array = res.obtainAttributes(attrs, com.android.internal.R.styleable.AutoFillService); mSettingsActivity = array.getString( com.android.internal.R.styleable.AutoFillService_settingsActivity); array.recycle(); } catch (XmlPullParserException | IOException | PackageManager.NameNotFoundException e) { mParseError = "Error parsing auto fill service meta-data: " + e; Log.w(TAG, "error parsing auto fill service meta-data", e); return; } finally { if (parser != null) parser.close(); } mServiceInfo = si; } @Nullable public String getParseError() { return mParseError; } @Nullable public ServiceInfo getServiceInfo() { return mServiceInfo; } @Nullable public String getSettingsActivity() { return mSettingsActivity; } }