summaryrefslogtreecommitdiffstats
path: root/tools/aapt/Command.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tools/aapt/Command.cpp')
-rw-r--r--tools/aapt/Command.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/tools/aapt/Command.cpp b/tools/aapt/Command.cpp
index ee07415..537ae5e 100644
--- a/tools/aapt/Command.cpp
+++ b/tools/aapt/Command.cpp
@@ -525,6 +525,8 @@ int doDump(Bundle* bundle)
bool actWallpaperService = false;
bool specCameraFeature = false;
bool hasCameraPermission = false;
+ bool specGpsFeature = false;
+ bool hasGpsPermission = false;
int targetSdk = 0;
int smallScreen = 1;
int normalScreen = 1;
@@ -719,6 +721,8 @@ int doDump(Bundle* bundle)
REQUIRED_ATTR, NULL, 1);
if (name == "android.hardware.camera") {
specCameraFeature = true;
+ } else if (name == "android.hardware.location.gps") {
+ specGpsFeature = true;
}
printf("uses-feature%s:'%s'\n",
req ? "" : "-not-required", name.string());
@@ -734,6 +738,8 @@ int doDump(Bundle* bundle)
if (name != "" && error == "") {
if (name == "android.permission.CAMERA") {
hasCameraPermission = true;
+ } else if (name == "android.permission.ACCESS_FINE_LOCATION") {
+ hasGpsPermission = true;
}
printf("uses-permission:'%s'\n", name.string());
} else {
@@ -859,6 +865,14 @@ int doDump(Bundle* bundle)
printf("uses-feature:'android.hardware.camera.autofocus'\n");
}
+ if (!specGpsFeature && hasGpsPermission) {
+ // For applications that have not explicitly stated their
+ // GPS feature requirements, but have requested the "fine" (GPS)
+ // permission, we are going to give them compatibility treatment
+ // of requiring the equivalent to original android devices.
+ printf("uses-feature:'android.hardware.location.gps'\n");
+ }
+
if (hasMainActivity) {
printf("main\n");
}