summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorMartijn Coenen <maco@google.com>2017-04-12 13:52:40 -0700
committerMartijn Coenen <maco@google.com>2017-04-12 17:09:37 -0700
commit441d61bf16fb63a0e19d6252ab9ac4c35a739006 (patch)
tree45ff5d5a187381af3174a6da55fcd9f70c06af27 /core/java/android
parent055b51af2860c4457041582233c9cdf9b34e1487 (diff)
Add persistentFeature application attribute.
This allows us to only mark processes as persistent when a feature it actually depends on is present on the device. Also adds a "android.hardware.nfc.any" feature, to indicate the device supports any of the NFC features that require the NFC process to run persistently. Bug: 36873979 Bug: 37269025 Test: NFC is still started on devices with NFC Change-Id: I5792d75d8714f39718fa957177a632efcbbd37d3
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/content/pm/PackageManager.java11
-rw-r--r--core/java/android/content/pm/PackageParser.java7
2 files changed, 17 insertions, 1 deletions
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index c7a0da508b2b..e5c8f0d2ab3e 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -1763,6 +1763,17 @@ public abstract class PackageManager {
/**
* Feature for {@link #getSystemAvailableFeatures} and
+ * {@link #hasSystemFeature}: The device supports any
+ * one of the {@link #FEATURE_NFC}, {@link #FEATURE_NFC_HOST_CARD_EMULATION},
+ * or {@link #FEATURE_NFC_HOST_CARD_EMULATION_NFCF} features.
+ *
+ * @hide
+ */
+ @SdkConstant(SdkConstantType.FEATURE)
+ public static final String FEATURE_NFC_ANY = "android.hardware.nfc.any";
+
+ /**
+ * Feature for {@link #getSystemAvailableFeatures} and
* {@link #hasSystemFeature}: The device supports the OpenGL ES
* <a href="http://www.khronos.org/registry/gles/extensions/ANDROID/ANDROID_extension_pack_es31a.txt">
* Android Extension Pack</a>.
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index e64b2a56a277..11c658a1d4cf 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -3363,7 +3363,12 @@ public class PackageParser {
if (sa.getBoolean(
com.android.internal.R.styleable.AndroidManifestApplication_persistent,
false)) {
- ai.flags |= ApplicationInfo.FLAG_PERSISTENT;
+ // Check if persistence is based on a feature being present
+ final String requiredFeature = sa.getNonResourceString(
+ com.android.internal.R.styleable.AndroidManifestApplication_persistentFeature);
+ if (requiredFeature == null || mCallback.hasFeature(requiredFeature)) {
+ ai.flags |= ApplicationInfo.FLAG_PERSISTENT;
+ }
}
}