Merge "Add attr for nfc applications to configure support power states"

This commit is contained in:
Jack Yu
2021-02-03 02:28:03 +00:00
committed by Gerrit Code Review
4 changed files with 50 additions and 2 deletions

View File

@@ -1142,6 +1142,7 @@ package android {
field public static final int reqNavigation = 16843306; // 0x101022a field public static final int reqNavigation = 16843306; // 0x101022a
field public static final int reqTouchScreen = 16843303; // 0x1010227 field public static final int reqTouchScreen = 16843303; // 0x1010227
field public static final int requestLegacyExternalStorage = 16844291; // 0x1010603 field public static final int requestLegacyExternalStorage = 16844291; // 0x1010603
field public static final int requireDeviceScreenOn = 16844312; // 0x1010618
field public static final int requireDeviceUnlock = 16843756; // 0x10103ec field public static final int requireDeviceUnlock = 16843756; // 0x10103ec
field public static final int required = 16843406; // 0x101028e field public static final int required = 16843406; // 0x101028e
field public static final int requiredAccountType = 16843734; // 0x10103d6 field public static final int requiredAccountType = 16843734; // 0x10103d6

View File

@@ -96,6 +96,11 @@ public final class ApduServiceInfo implements Parcelable {
*/ */
final boolean mRequiresDeviceUnlock; final boolean mRequiresDeviceUnlock;
/**
* Whether this service should only be started when the device is screen on.
*/
final boolean mRequiresDeviceScreenOn;
/** /**
* The id of the service banner specified in XML. * The id of the service banner specified in XML.
*/ */
@@ -119,6 +124,18 @@ public final class ApduServiceInfo implements Parcelable {
ArrayList<AidGroup> staticAidGroups, ArrayList<AidGroup> dynamicAidGroups, ArrayList<AidGroup> staticAidGroups, ArrayList<AidGroup> dynamicAidGroups,
boolean requiresUnlock, int bannerResource, int uid, boolean requiresUnlock, int bannerResource, int uid,
String settingsActivityName, String offHost, String staticOffHost) { String settingsActivityName, String offHost, String staticOffHost) {
this(info, onHost, description, staticAidGroups, dynamicAidGroups,
requiresUnlock, onHost ? true : false, bannerResource, uid,
settingsActivityName, offHost, staticOffHost);
}
/**
* @hide
*/
public ApduServiceInfo(ResolveInfo info, boolean onHost, String description,
ArrayList<AidGroup> staticAidGroups, ArrayList<AidGroup> dynamicAidGroups,
boolean requiresUnlock, boolean requiresScreenOn, int bannerResource, int uid,
String settingsActivityName, String offHost, String staticOffHost) {
this.mService = info; this.mService = info;
this.mDescription = description; this.mDescription = description;
this.mStaticAidGroups = new HashMap<String, AidGroup>(); this.mStaticAidGroups = new HashMap<String, AidGroup>();
@@ -127,6 +144,7 @@ public final class ApduServiceInfo implements Parcelable {
this.mStaticOffHostName = staticOffHost; this.mStaticOffHostName = staticOffHost;
this.mOnHost = onHost; this.mOnHost = onHost;
this.mRequiresDeviceUnlock = requiresUnlock; this.mRequiresDeviceUnlock = requiresUnlock;
this.mRequiresDeviceScreenOn = requiresScreenOn;
for (AidGroup aidGroup : staticAidGroups) { for (AidGroup aidGroup : staticAidGroups) {
this.mStaticAidGroups.put(aidGroup.category, aidGroup); this.mStaticAidGroups.put(aidGroup.category, aidGroup);
} }
@@ -183,6 +201,9 @@ public final class ApduServiceInfo implements Parcelable {
mRequiresDeviceUnlock = sa.getBoolean( mRequiresDeviceUnlock = sa.getBoolean(
com.android.internal.R.styleable.HostApduService_requireDeviceUnlock, com.android.internal.R.styleable.HostApduService_requireDeviceUnlock,
false); false);
mRequiresDeviceScreenOn = sa.getBoolean(
com.android.internal.R.styleable.HostApduService_requireDeviceScreenOn,
true);
mBannerResourceId = sa.getResourceId( mBannerResourceId = sa.getResourceId(
com.android.internal.R.styleable.HostApduService_apduServiceBanner, -1); com.android.internal.R.styleable.HostApduService_apduServiceBanner, -1);
mSettingsActivityName = sa.getString( mSettingsActivityName = sa.getString(
@@ -196,7 +217,12 @@ public final class ApduServiceInfo implements Parcelable {
mService = info; mService = info;
mDescription = sa.getString( mDescription = sa.getString(
com.android.internal.R.styleable.OffHostApduService_description); com.android.internal.R.styleable.OffHostApduService_description);
mRequiresDeviceUnlock = false; mRequiresDeviceUnlock = sa.getBoolean(
com.android.internal.R.styleable.OffHostApduService_requireDeviceUnlock,
false);
mRequiresDeviceScreenOn = sa.getBoolean(
com.android.internal.R.styleable.OffHostApduService_requireDeviceScreenOn,
false);
mBannerResourceId = sa.getResourceId( mBannerResourceId = sa.getResourceId(
com.android.internal.R.styleable.OffHostApduService_apduServiceBanner, -1); com.android.internal.R.styleable.OffHostApduService_apduServiceBanner, -1);
mSettingsActivityName = sa.getString( mSettingsActivityName = sa.getString(
@@ -419,6 +445,13 @@ public final class ApduServiceInfo implements Parcelable {
return mRequiresDeviceUnlock; return mRequiresDeviceUnlock;
} }
/**
* Returns whether this service should only be started when the device is screen on.
*/
public boolean requiresScreenOn() {
return mRequiresDeviceScreenOn;
}
@UnsupportedAppUsage @UnsupportedAppUsage
public String getDescription() { public String getDescription() {
return mDescription; return mDescription;
@@ -542,6 +575,7 @@ public final class ApduServiceInfo implements Parcelable {
dest.writeTypedList(new ArrayList<AidGroup>(mDynamicAidGroups.values())); dest.writeTypedList(new ArrayList<AidGroup>(mDynamicAidGroups.values()));
} }
dest.writeInt(mRequiresDeviceUnlock ? 1 : 0); dest.writeInt(mRequiresDeviceUnlock ? 1 : 0);
dest.writeInt(mRequiresDeviceScreenOn ? 1 : 0);
dest.writeInt(mBannerResourceId); dest.writeInt(mBannerResourceId);
dest.writeInt(mUid); dest.writeInt(mUid);
dest.writeString(mSettingsActivityName); dest.writeString(mSettingsActivityName);
@@ -568,11 +602,12 @@ public final class ApduServiceInfo implements Parcelable {
source.readTypedList(dynamicAidGroups, AidGroup.CREATOR); source.readTypedList(dynamicAidGroups, AidGroup.CREATOR);
} }
boolean requiresUnlock = source.readInt() != 0; boolean requiresUnlock = source.readInt() != 0;
boolean requiresScreenOn = source.readInt() != 0;
int bannerResource = source.readInt(); int bannerResource = source.readInt();
int uid = source.readInt(); int uid = source.readInt();
String settingsActivityName = source.readString(); String settingsActivityName = source.readString();
return new ApduServiceInfo(info, onHost, description, staticAidGroups, return new ApduServiceInfo(info, onHost, description, staticAidGroups,
dynamicAidGroups, requiresUnlock, bannerResource, uid, dynamicAidGroups, requiresUnlock, requiresScreenOn, bannerResource, uid,
settingsActivityName, offHostName, staticOffHostName); settingsActivityName, offHostName, staticOffHostName);
} }
@@ -607,6 +642,8 @@ public final class ApduServiceInfo implements Parcelable {
} }
} }
pw.println(" Settings Activity: " + mSettingsActivityName); pw.println(" Settings Activity: " + mSettingsActivityName);
pw.println(" Requires Device Unlock: " + mRequiresDeviceUnlock);
pw.println(" Requires Device ScreenOn: " + mRequiresDeviceScreenOn);
} }
/** /**

View File

@@ -3856,6 +3856,9 @@
<!-- Component name of an activity that allows the user to modify <!-- Component name of an activity that allows the user to modify
the settings for this service. --> the settings for this service. -->
<attr name="settingsActivity"/> <attr name="settingsActivity"/>
<!-- Whether the device must be screen on before routing data to this service.
The default is true.-->
<attr name="requireDeviceScreenOn" format="boolean"/>
</declare-styleable> </declare-styleable>
<!-- Use <code>offhost-apdu-service</code> as the root tag of the XML resource that <!-- Use <code>offhost-apdu-service</code> as the root tag of the XML resource that
@@ -3874,6 +3877,12 @@
<attr name="settingsActivity"/> <attr name="settingsActivity"/>
<!-- Secure Element which the AIDs should be routed to --> <!-- Secure Element which the AIDs should be routed to -->
<attr name="secureElementName" format="string"/> <attr name="secureElementName" format="string"/>
<!-- Whether the device must be unlocked before routing data to this service.
The default is false.-->
<attr name="requireDeviceUnlock"/>
<!-- Whether the device must be screen on before routing data to this service.
The default is false.-->
<attr name="requireDeviceScreenOn"/>
</declare-styleable> </declare-styleable>
<!-- Specify one or more <code>aid-group</code> elements inside a <!-- Specify one or more <code>aid-group</code> elements inside a

View File

@@ -3045,6 +3045,7 @@
<public-group type="attr" first-id="0x01010617"> <public-group type="attr" first-id="0x01010617">
<public name="canPauseRecording" /> <public name="canPauseRecording" />
<!-- attribute definitions go here --> <!-- attribute definitions go here -->
<public name="requireDeviceScreenOn" />
</public-group> </public-group>
<public-group type="drawable" first-id="0x010800b5"> <public-group type="drawable" first-id="0x010800b5">