aboutsummaryrefslogtreecommitdiffstats
path: root/lint
diff options
context:
space:
mode:
authorSebastian Porst <sporst@google.com>2012-10-09 11:52:55 -0700
committerSebastian Porst <sporst@google.com>2012-10-09 11:53:18 -0700
commit8e85c5aa8462e2e9c7add924d57fecd44c3763fa (patch)
tree611f5653495a207aa38af8068bceac01b08811e6 /lint
parentc5fce2e12268c60332b7011cee8c1081ad424950 (diff)
downloadsdk-8e85c5aa8462e2e9c7add924d57fecd44c3763fa.zip
sdk-8e85c5aa8462e2e9c7add924d57fecd44c3763fa.tar.gz
sdk-8e85c5aa8462e2e9c7add924d57fecd44c3763fa.tar.bz2
Added a lint checker to flag permissions that are only granted to system applications
Change-Id: If423ad3c477dbad9011b600e5c8d8773963d27b9
Diffstat (limited to 'lint')
-rw-r--r--lint/libs/lint_checks/src/com/android/tools/lint/checks/BuiltinIssueRegistry.java3
-rw-r--r--lint/libs/lint_checks/src/com/android/tools/lint/checks/SystemPermissionsDetector.java185
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/SystemPermissionsDetectorTest.java293
-rw-r--r--lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/protectedpermissions.xml116
4 files changed, 596 insertions, 1 deletions
diff --git a/lint/libs/lint_checks/src/com/android/tools/lint/checks/BuiltinIssueRegistry.java b/lint/libs/lint_checks/src/com/android/tools/lint/checks/BuiltinIssueRegistry.java
index 7b18f81..80c3a5a 100644
--- a/lint/libs/lint_checks/src/com/android/tools/lint/checks/BuiltinIssueRegistry.java
+++ b/lint/libs/lint_checks/src/com/android/tools/lint/checks/BuiltinIssueRegistry.java
@@ -55,7 +55,7 @@ public class BuiltinIssueRegistry extends IssueRegistry {
private static final List<Issue> sIssues;
static {
- final int initialCapacity = 115;
+ final int initialCapacity = 116;
List<Issue> issues = new ArrayList<Issue>(initialCapacity);
issues.add(AccessibilityDetector.ISSUE);
@@ -173,6 +173,7 @@ public class BuiltinIssueRegistry extends IssueRegistry {
issues.add(NonInternationalizedSmsDetector.ISSUE);
issues.add(PrivateKeyDetector.ISSUE);
issues.add(AnnotationDetector.ISSUE);
+ issues.add(SystemPermissionsDetector.ISSUE);
assert initialCapacity >= issues.size() : issues.size();
diff --git a/lint/libs/lint_checks/src/com/android/tools/lint/checks/SystemPermissionsDetector.java b/lint/libs/lint_checks/src/com/android/tools/lint/checks/SystemPermissionsDetector.java
new file mode 100644
index 0000000..641c74a
--- /dev/null
+++ b/lint/libs/lint_checks/src/com/android/tools/lint/checks/SystemPermissionsDetector.java
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.tools.lint.checks;
+
+import static com.android.SdkConstants.ANDROID_MANIFEST_XML;
+import static com.android.SdkConstants.ANDROID_URI;
+import static com.android.SdkConstants.ATTR_NAME;
+import static com.android.SdkConstants.TAG_USES_PERMISSION;
+
+import com.android.annotations.NonNull;
+import com.android.tools.lint.detector.api.Category;
+import com.android.tools.lint.detector.api.Context;
+import com.android.tools.lint.detector.api.Detector;
+import com.android.tools.lint.detector.api.Issue;
+import com.android.tools.lint.detector.api.Scope;
+import com.android.tools.lint.detector.api.Severity;
+import com.android.tools.lint.detector.api.Speed;
+import com.android.tools.lint.detector.api.XmlContext;
+
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.EnumSet;
+
+/**
+ * Checks if an application wants to use permissions that can only be used by
+ * system applications.
+ */
+public class SystemPermissionsDetector extends Detector implements Detector.XmlScanner {
+ /** The main issue discovered by this detector */
+ public static final Issue ISSUE = Issue.create(
+ "ProtectedPermissons", //$NON-NLS-1$
+ "Looks for permissions that are only granted to system apps",
+
+ "Permissions with the protection level signature or signatureOrSystem are only " +
+ "granted to system apps. If an app is a regular non-system app, it will never be " +
+ "able to use these permissions.",
+
+ Category.CORRECTNESS,
+ 5,
+ Severity.ERROR,
+ SystemPermissionsDetector.class,
+ EnumSet.of(Scope.MANIFEST));
+
+ // List of permissions have the protection levels signature or systemOrSignature.
+ // This list must be sorted alphabetically.
+ private static final String[] SYSTEM_PERMISSIONS = new String[] {
+ "android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE",
+ "android.permission.ACCESS_CACHE_FILESYSTEM",
+ "android.permission.ACCESS_CHECKIN_PROPERTIES",
+ "android.permission.ACCESS_MTP",
+ "android.permission.ACCESS_SURFACE_FLINGER",
+ "android.permission.ACCOUNT_MANAGER",
+ "android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK",
+ "android.permission.ASEC_ACCESS",
+ "android.permission.ASEC_CREATE",
+ "android.permission.ASEC_DESTROY",
+ "android.permission.ASEC_MOUNT_UNMOUNT",
+ "android.permission.ASEC_RENAME",
+ "android.permission.BACKUP",
+ "android.permission.BIND_APPWIDGET",
+ "android.permission.BIND_DEVICE_ADMIN",
+ "android.permission.BIND_INPUT_METHOD",
+ "android.permission.BIND_PACKAGE_VERIFIER",
+ "android.permission.BIND_REMOTEVIEWS",
+ "android.permission.BIND_TEXT_SERVICE",
+ "android.permission.BIND_VPN_SERVICE",
+ "android.permission.BIND_WALLPAPER",
+ "android.permission.BRICK",
+ "android.permission.BROADCAST_PACKAGE_REMOVED",
+ "android.permission.BROADCAST_SMS",
+ "android.permission.BROADCAST_WAP_PUSH",
+ "android.permission.CALL_PRIVILEGED",
+ "android.permission.CHANGE_BACKGROUND_DATA_SETTING",
+ "android.permission.CHANGE_COMPONENT_ENABLED_STATE",
+ "android.permission.CLEAR_APP_USER_DATA",
+ "android.permission.CONFIRM_FULL_BACKUP",
+ "android.permission.CONNECTIVITY_INTERNAL",
+ "android.permission.CONTROL_LOCATION_UPDATES",
+ "android.permission.COPY_PROTECTED_DATA",
+ "android.permission.CRYPT_KEEPER",
+ "android.permission.DELETE_CACHE_FILES",
+ "android.permission.DELETE_PACKAGES",
+ "android.permission.DEVICE_POWER",
+ "android.permission.DIAGNOSTIC",
+ "android.permission.DUMP",
+ "android.permission.FACTORY_TEST",
+ "android.permission.FORCE_BACK",
+ "android.permission.FORCE_STOP_PACKAGES",
+ "android.permission.GLOBAL_SEARCH",
+ "android.permission.GLOBAL_SEARCH_CONTROL",
+ "android.permission.HARDWARE_TEST",
+ "android.permission.INJECT_EVENTS",
+ "android.permission.INSTALL_LOCATION_PROVIDER",
+ "android.permission.INSTALL_PACKAGES",
+ "android.permission.INTERNAL_SYSTEM_WINDOW",
+ "android.permission.MANAGE_APP_TOKENS",
+ "android.permission.MANAGE_NETWORK_POLICY",
+ "android.permission.MANAGE_USB",
+ "android.permission.MASTER_CLEAR",
+ "android.permission.MODIFY_NETWORK_ACCOUNTING",
+ "android.permission.MODIFY_PHONE_STATE",
+ "android.permission.MOVE_PACKAGE",
+ "android.permission.NET_ADMIN",
+ "android.permission.MODIFY_PHONE_STATE",
+ "android.permission.PACKAGE_USAGE_STATS",
+ "android.permission.PACKAGE_VERIFICATION_AGENT",
+ "android.permission.PERFORM_CDMA_PROVISIONING",
+ "android.permission.READ_FRAME_BUFFER",
+ "android.permission.READ_INPUT_STATE",
+ "android.permission.READ_NETWORK_USAGE_HISTORY",
+ "android.permission.READ_PRIVILEGED_PHONE_STATE",
+ "android.permission.REBOOT",
+ "android.permission.RECEIVE_EMERGENCY_BROADCAST",
+ "android.permission.REMOVE_TASKS",
+ "android.permission.RETRIEVE_WINDOW_CONTENT",
+ "android.permission.SEND_SMS_NO_CONFIRMATION",
+ "android.permission.SET_ACTIVITY_WATCHER",
+ "android.permission.SET_ORIENTATION",
+ "android.permission.SET_POINTER_SPEED",
+ "android.permission.SET_PREFERRED_APPLICATIONS",
+ "android.permission.SET_SCREEN_COMPATIBILITY",
+ "android.permission.SET_TIME",
+ "android.permission.SET_WALLPAPER_COMPONENT",
+ "android.permission.SHUTDOWN",
+ "android.permission.STATUS_BAR",
+ "android.permission.STATUS_BAR_SERVICE",
+ "android.permission.STOP_APP_SWITCHES",
+ "android.permission.UPDATE_DEVICE_STATS",
+ "android.permission.WRITE_APN_SETTINGS",
+ "android.permission.WRITE_GSERVICES",
+ "android.permission.WRITE_MEDIA_STORAGE",
+ "android.permission.WRITE_SECURE_SETTINGS"
+ };
+
+ /** Constructs a new {@link SystemPermissionsDetector} check */
+ public SystemPermissionsDetector() {
+ }
+
+ @Override
+ public @NonNull Speed getSpeed() {
+ return Speed.FAST;
+ }
+
+ @Override
+ public boolean appliesTo(@NonNull Context context, @NonNull File file) {
+ return file.getName().equals(ANDROID_MANIFEST_XML);
+ }
+
+ // ---- Implements Detector.XmlScanner ----
+
+ @Override
+ public Collection<String> getApplicableElements() {
+ return Arrays.asList(TAG_USES_PERMISSION);
+ }
+
+ @Override
+ public void visitElement(@NonNull XmlContext context, @NonNull Element element) {
+ Attr nameNode = element.getAttributeNodeNS(ANDROID_URI, ATTR_NAME);
+ if (nameNode != null) {
+ String permissionName = nameNode.getValue();
+ if (Arrays.binarySearch(SYSTEM_PERMISSIONS, permissionName) >= 0) {
+ context.report(ISSUE, context.getLocation(nameNode),
+ "Permission is only granted to system apps", null);
+ }
+ }
+ }
+}
diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/SystemPermissionsDetectorTest.java b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/SystemPermissionsDetectorTest.java
new file mode 100644
index 0000000..baa6fd4
--- /dev/null
+++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/SystemPermissionsDetectorTest.java
@@ -0,0 +1,293 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.tools.lint.checks;
+
+import com.android.tools.lint.detector.api.Detector;
+
+@SuppressWarnings("javadoc")
+public class SystemPermissionsDetectorTest extends AbstractCheckTest {
+ @Override
+ protected Detector getDetector() {
+ return new SystemPermissionsDetector();
+ }
+
+ public void testBrokenOrder() throws Exception {
+ assertEquals(
+ "AndroidManifest.xml:15: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:16: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.ACCESS_CACHE_FILESYSTEM\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:17: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.ACCESS_CHECKIN_PROPERTIES\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:18: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.ACCESS_MTP\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:19: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.ACCESS_SURFACE_FLINGER\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:20: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.ACCOUNT_MANAGER\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:21: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:22: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.ASEC_ACCESS\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:23: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.ASEC_CREATE\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:24: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.ASEC_DESTROY\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:25: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.ASEC_MOUNT_UNMOUNT\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:26: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.ASEC_RENAME\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:27: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.BACKUP\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:28: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.BIND_APPWIDGET\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:29: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.BIND_DEVICE_ADMIN\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:30: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.BIND_INPUT_METHOD\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:31: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.BIND_PACKAGE_VERIFIER\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:32: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.BIND_REMOTEVIEWS\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:33: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.BIND_TEXT_SERVICE\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:34: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.BIND_VPN_SERVICE\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:35: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.BIND_WALLPAPER\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:36: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.BRICK\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:37: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.BROADCAST_PACKAGE_REMOVED\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:38: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.BROADCAST_SMS\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:39: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.BROADCAST_WAP_PUSH\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:40: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.CALL_PRIVILEGED\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:41: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.CHANGE_BACKGROUND_DATA_SETTING\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:42: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.CHANGE_COMPONENT_ENABLED_STATE\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:43: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.CLEAR_APP_USER_DATA\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:44: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.CONFIRM_FULL_BACKUP\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:45: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.CONNECTIVITY_INTERNAL\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:46: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.CONTROL_LOCATION_UPDATES\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:47: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.COPY_PROTECTED_DATA\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:48: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.CRYPT_KEEPER\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:49: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.DELETE_CACHE_FILES\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:50: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.DELETE_PACKAGES\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:51: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.DEVICE_POWER\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:52: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.DIAGNOSTIC\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:53: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.DUMP\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:54: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.FACTORY_TEST\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:55: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.FORCE_BACK\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:56: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.FORCE_STOP_PACKAGES\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:57: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.GLOBAL_SEARCH\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:58: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.GLOBAL_SEARCH_CONTROL\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:59: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.HARDWARE_TEST\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:60: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.INJECT_EVENTS\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:61: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.INSTALL_LOCATION_PROVIDER\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:62: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.INSTALL_PACKAGES\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:63: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.INTERNAL_SYSTEM_WINDOW\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:64: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.MANAGE_APP_TOKENS\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:65: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.MANAGE_NETWORK_POLICY\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:66: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.MANAGE_USB\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:67: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.MASTER_CLEAR\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:68: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.MODIFY_NETWORK_ACCOUNTING\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:69: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.MODIFY_PHONE_STATE\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:70: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.MOVE_PACKAGE\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:71: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.NET_ADMIN\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:72: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.MODIFY_PHONE_STATE\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:73: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.PACKAGE_USAGE_STATS\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:74: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.PACKAGE_VERIFICATION_AGENT\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:75: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.PERFORM_CDMA_PROVISIONING\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:76: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.READ_FRAME_BUFFER\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:77: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.READ_INPUT_STATE\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:78: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.READ_NETWORK_USAGE_HISTORY\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:79: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.READ_PRIVILEGED_PHONE_STATE\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:80: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.REBOOT\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:81: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.RECEIVE_EMERGENCY_BROADCAST\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:82: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.REMOVE_TASKS\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:83: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.RETRIEVE_WINDOW_CONTENT\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:84: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.SEND_SMS_NO_CONFIRMATION\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:85: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.SET_ACTIVITY_WATCHER\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:86: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.SET_ORIENTATION\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:87: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.SET_POINTER_SPEED\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:88: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.SET_PREFERRED_APPLICATIONS\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:89: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.SET_SCREEN_COMPATIBILITY\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:90: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.SET_TIME\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:91: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.SET_WALLPAPER_COMPONENT\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:92: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.SHUTDOWN\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:93: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.STATUS_BAR\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:94: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.STATUS_BAR_SERVICE\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:95: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.STOP_APP_SWITCHES\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:96: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.UPDATE_DEVICE_STATS\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:97: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.WRITE_APN_SETTINGS\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:98: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.WRITE_GSERVICES\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:99: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.WRITE_MEDIA_STORAGE\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "AndroidManifest.xml:100: Error: Permission is only granted to system apps [ProtectedPermissons]\n" +
+ " <uses-permission android:name=\"android.permission.WRITE_SECURE_SETTINGS\" />\n" +
+ " ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n" +
+ "86 errors, 0 warnings\n",
+
+ lintProject(
+ "protectedpermissions.xml=>AndroidManifest.xml"));
+ }
+}
diff --git a/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/protectedpermissions.xml b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/protectedpermissions.xml
new file mode 100644
index 0000000..8b62497
--- /dev/null
+++ b/lint/libs/lint_checks/tests/src/com/android/tools/lint/checks/data/protectedpermissions.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="foo.bar2"
+ android:versionCode="1"
+ android:versionName="1.0" >
+
+ <uses-sdk android:minSdkVersion="14" />
+
+ <!-- No warnings for those -->
+ <uses-permission android:name="android.permission.GET_ACCOUNTS" />
+ <uses-permission android:name="android.permission.SEND_SMS" />
+ <uses-permission android:name="android.permission.INTERNET" />
+
+ <!-- Warnings for those -->
+ <uses-permission android:name="android.intent.category.MASTER_CLEAR.permission.C2D_MESSAGE" />
+ <uses-permission android:name="android.permission.ACCESS_CACHE_FILESYSTEM" />
+ <uses-permission android:name="android.permission.ACCESS_CHECKIN_PROPERTIES" />
+ <uses-permission android:name="android.permission.ACCESS_MTP" />
+ <uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" />
+ <uses-permission android:name="android.permission.ACCOUNT_MANAGER" />
+ <uses-permission android:name="android.permission.ALLOW_ANY_CODEC_FOR_PLAYBACK" />
+ <uses-permission android:name="android.permission.ASEC_ACCESS" />
+ <uses-permission android:name="android.permission.ASEC_CREATE" />
+ <uses-permission android:name="android.permission.ASEC_DESTROY" />
+ <uses-permission android:name="android.permission.ASEC_MOUNT_UNMOUNT" />
+ <uses-permission android:name="android.permission.ASEC_RENAME" />
+ <uses-permission android:name="android.permission.BACKUP" />
+ <uses-permission android:name="android.permission.BIND_APPWIDGET" />
+ <uses-permission android:name="android.permission.BIND_DEVICE_ADMIN" />
+ <uses-permission android:name="android.permission.BIND_INPUT_METHOD" />
+ <uses-permission android:name="android.permission.BIND_PACKAGE_VERIFIER" />
+ <uses-permission android:name="android.permission.BIND_REMOTEVIEWS" />
+ <uses-permission android:name="android.permission.BIND_TEXT_SERVICE" />
+ <uses-permission android:name="android.permission.BIND_VPN_SERVICE" />
+ <uses-permission android:name="android.permission.BIND_WALLPAPER" />
+ <uses-permission android:name="android.permission.BRICK" />
+ <uses-permission android:name="android.permission.BROADCAST_PACKAGE_REMOVED" />
+ <uses-permission android:name="android.permission.BROADCAST_SMS" />
+ <uses-permission android:name="android.permission.BROADCAST_WAP_PUSH" />
+ <uses-permission android:name="android.permission.CALL_PRIVILEGED" />
+ <uses-permission android:name="android.permission.CHANGE_BACKGROUND_DATA_SETTING" />
+ <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" />
+ <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
+ <uses-permission android:name="android.permission.CONFIRM_FULL_BACKUP" />
+ <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
+ <uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />
+ <uses-permission android:name="android.permission.COPY_PROTECTED_DATA" />
+ <uses-permission android:name="android.permission.CRYPT_KEEPER" />
+ <uses-permission android:name="android.permission.DELETE_CACHE_FILES" />
+ <uses-permission android:name="android.permission.DELETE_PACKAGES" />
+ <uses-permission android:name="android.permission.DEVICE_POWER" />
+ <uses-permission android:name="android.permission.DIAGNOSTIC" />
+ <uses-permission android:name="android.permission.DUMP" />
+ <uses-permission android:name="android.permission.FACTORY_TEST" />
+ <uses-permission android:name="android.permission.FORCE_BACK" />
+ <uses-permission android:name="android.permission.FORCE_STOP_PACKAGES" />
+ <uses-permission android:name="android.permission.GLOBAL_SEARCH" />
+ <uses-permission android:name="android.permission.GLOBAL_SEARCH_CONTROL" />
+ <uses-permission android:name="android.permission.HARDWARE_TEST" />
+ <uses-permission android:name="android.permission.INJECT_EVENTS" />
+ <uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER" />
+ <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
+ <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
+ <uses-permission android:name="android.permission.MANAGE_APP_TOKENS" />
+ <uses-permission android:name="android.permission.MANAGE_NETWORK_POLICY" />
+ <uses-permission android:name="android.permission.MANAGE_USB" />
+ <uses-permission android:name="android.permission.MASTER_CLEAR" />
+ <uses-permission android:name="android.permission.MODIFY_NETWORK_ACCOUNTING" />
+ <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
+ <uses-permission android:name="android.permission.MOVE_PACKAGE" />
+ <uses-permission android:name="android.permission.NET_ADMIN" />
+ <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />
+ <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
+ <uses-permission android:name="android.permission.PACKAGE_VERIFICATION_AGENT" />
+ <uses-permission android:name="android.permission.PERFORM_CDMA_PROVISIONING" />
+ <uses-permission android:name="android.permission.READ_FRAME_BUFFER" />
+ <uses-permission android:name="android.permission.READ_INPUT_STATE" />
+ <uses-permission android:name="android.permission.READ_NETWORK_USAGE_HISTORY" />
+ <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
+ <uses-permission android:name="android.permission.REBOOT" />
+ <uses-permission android:name="android.permission.RECEIVE_EMERGENCY_BROADCAST" />
+ <uses-permission android:name="android.permission.REMOVE_TASKS" />
+ <uses-permission android:name="android.permission.RETRIEVE_WINDOW_CONTENT" />
+ <uses-permission android:name="android.permission.SEND_SMS_NO_CONFIRMATION" />
+ <uses-permission android:name="android.permission.SET_ACTIVITY_WATCHER" />
+ <uses-permission android:name="android.permission.SET_ORIENTATION" />
+ <uses-permission android:name="android.permission.SET_POINTER_SPEED" />
+ <uses-permission android:name="android.permission.SET_PREFERRED_APPLICATIONS" />
+ <uses-permission android:name="android.permission.SET_SCREEN_COMPATIBILITY" />
+ <uses-permission android:name="android.permission.SET_TIME" />
+ <uses-permission android:name="android.permission.SET_WALLPAPER_COMPONENT" />
+ <uses-permission android:name="android.permission.SHUTDOWN" />
+ <uses-permission android:name="android.permission.STATUS_BAR" />
+ <uses-permission android:name="android.permission.STATUS_BAR_SERVICE" />
+ <uses-permission android:name="android.permission.STOP_APP_SWITCHES" />
+ <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
+ <uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
+ <uses-permission android:name="android.permission.WRITE_GSERVICES" />
+ <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
+ <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+
+ <application
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name" >
+ <activity
+ android:label="@string/app_name"
+ android:name=".Foo2Activity" >
+ <intent-filter >
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+
+</manifest> \ No newline at end of file