Loading tools/aapt/Command.cpp +68 −3 Original line number Diff line number Diff line Loading @@ -346,6 +346,7 @@ enum { LABEL_ATTR = 0x01010001, ICON_ATTR = 0x01010002, NAME_ATTR = 0x01010003, PERMISSION_ATTR = 0x01010006, DEBUGGABLE_ATTR = 0x0101000f, VERSION_CODE_ATTR = 0x0101021b, VERSION_NAME_ATTR = 0x0101021c, Loading Loading @@ -631,12 +632,25 @@ int doDump(Bundle* bundle) bool hasOtherServices = false; bool hasWallpaperService = false; bool hasImeService = false; bool hasAccessibilityService = false; bool hasPrintService = false; bool hasWidgetReceivers = false; bool hasDeviceAdminReceiver = false; bool hasIntentFilter = false; bool actMainActivity = false; bool actWidgetReceivers = false; bool actDeviceAdminEnabled = false; bool actImeService = false; bool actWallpaperService = false; bool actAccessibilityService = false; bool actPrintService = false; // These permissions are required by services implementing services // the system binds to (IME, Accessibility, PrintServices, etc.) bool hasBindDeviceAdminPermission = false; bool hasBindInputMethodPermission = false; bool hasBindAccessibilityServicePermission = false; bool hasBindPrintServicePermission = false; // These two implement the implicit permissions that are granted // to pre-1.6 applications. Loading Loading @@ -760,11 +774,17 @@ int doDump(Bundle* bundle) hasOtherActivities |= !actMainActivity; } else if (withinReceiver) { hasWidgetReceivers |= actWidgetReceivers; hasOtherReceivers |= !actWidgetReceivers; hasDeviceAdminReceiver |= (actDeviceAdminEnabled && hasBindDeviceAdminPermission); hasOtherReceivers |= (!actWidgetReceivers && !actDeviceAdminEnabled); } else if (withinService) { hasImeService |= actImeService; hasWallpaperService |= actWallpaperService; hasOtherServices |= (!actImeService && !actWallpaperService); hasAccessibilityService |= (actAccessibilityService && hasBindAccessibilityServicePermission); hasPrintService |= (actPrintService && hasBindPrintServicePermission); hasOtherServices |= (!actImeService && !actWallpaperService && !actAccessibilityService && !actPrintService); } } withinIntentFilter = false; Loading Loading @@ -1166,6 +1186,16 @@ int doDump(Bundle* bundle) " %s\n", error.string()); goto bail; } String8 permission = getAttribute(tree, PERMISSION_ATTR, &error); if (error == "") { if (permission == "android.permission.BIND_DEVICE_ADMIN") { hasBindDeviceAdminPermission = true; } } else { fprintf(stderr, "ERROR getting 'android:permission' attribute for" " receiver '%s': %s\n", receiverName.string(), error.string()); } } else if (tag == "service") { withinService = true; serviceName = getAttribute(tree, NAME_ATTR, &error); Loading @@ -1175,6 +1205,20 @@ int doDump(Bundle* bundle) " service: %s\n", error.string()); goto bail; } String8 permission = getAttribute(tree, PERMISSION_ATTR, &error); if (error == "") { if (permission == "android.permission.BIND_INPUT_METHOD") { hasBindInputMethodPermission = true; } else if (permission == "android.permission.BIND_ACCESSIBILITY_SERVICE") { hasBindAccessibilityServicePermission = true; } else if (permission == "android.permission.BIND_PRINT_SERVICE") { hasBindPrintServicePermission = true; } } else { fprintf(stderr, "ERROR getting 'android:permission' attribute for" " service '%s': %s\n", serviceName.string(), error.string()); } } } else if (withinSupportsInput && tag == "input-type") { String8 name = getAttribute(tree, NAME_ATTR, &error); Loading @@ -1189,7 +1233,13 @@ int doDump(Bundle* bundle) } else if ((depth == 4) && (tag == "intent-filter")) { hasIntentFilter = true; withinIntentFilter = true; actMainActivity = actWidgetReceivers = actImeService = actWallpaperService = false; actMainActivity = false; actWidgetReceivers = false; actImeService = false; actWallpaperService = false; actAccessibilityService = false; actPrintService = false; actDeviceAdminEnabled = false; } else if ((depth == 5) && withinIntentFilter){ String8 action; if (tag == "action") { Loading @@ -1206,12 +1256,18 @@ int doDump(Bundle* bundle) } else if (withinReceiver) { if (action == "android.appwidget.action.APPWIDGET_UPDATE") { actWidgetReceivers = true; } else if (action == "android.app.action.DEVICE_ADMIN_ENABLED") { actDeviceAdminEnabled = true; } } else if (withinService) { if (action == "android.view.InputMethod") { actImeService = true; } else if (action == "android.service.wallpaper.WallpaperService") { actWallpaperService = true; } else if (action == "android.accessibilityservice.AccessibilityService") { actAccessibilityService = true; } else if (action == "android.printservice.PrintService") { actPrintService = true; } } if (action == "android.intent.action.SEARCH") { Loading Loading @@ -1411,12 +1467,21 @@ int doDump(Bundle* bundle) if (hasWidgetReceivers) { printf("app-widget\n"); } if (hasDeviceAdminReceiver) { printf("device-admin\n"); } if (hasImeService) { printf("ime\n"); } if (hasWallpaperService) { printf("wallpaper\n"); } if (hasAccessibilityService) { printf("accessibility\n"); } if (hasPrintService) { printf("print\n"); } if (hasOtherActivities) { printf("other-activities\n"); } Loading Loading
tools/aapt/Command.cpp +68 −3 Original line number Diff line number Diff line Loading @@ -346,6 +346,7 @@ enum { LABEL_ATTR = 0x01010001, ICON_ATTR = 0x01010002, NAME_ATTR = 0x01010003, PERMISSION_ATTR = 0x01010006, DEBUGGABLE_ATTR = 0x0101000f, VERSION_CODE_ATTR = 0x0101021b, VERSION_NAME_ATTR = 0x0101021c, Loading Loading @@ -631,12 +632,25 @@ int doDump(Bundle* bundle) bool hasOtherServices = false; bool hasWallpaperService = false; bool hasImeService = false; bool hasAccessibilityService = false; bool hasPrintService = false; bool hasWidgetReceivers = false; bool hasDeviceAdminReceiver = false; bool hasIntentFilter = false; bool actMainActivity = false; bool actWidgetReceivers = false; bool actDeviceAdminEnabled = false; bool actImeService = false; bool actWallpaperService = false; bool actAccessibilityService = false; bool actPrintService = false; // These permissions are required by services implementing services // the system binds to (IME, Accessibility, PrintServices, etc.) bool hasBindDeviceAdminPermission = false; bool hasBindInputMethodPermission = false; bool hasBindAccessibilityServicePermission = false; bool hasBindPrintServicePermission = false; // These two implement the implicit permissions that are granted // to pre-1.6 applications. Loading Loading @@ -760,11 +774,17 @@ int doDump(Bundle* bundle) hasOtherActivities |= !actMainActivity; } else if (withinReceiver) { hasWidgetReceivers |= actWidgetReceivers; hasOtherReceivers |= !actWidgetReceivers; hasDeviceAdminReceiver |= (actDeviceAdminEnabled && hasBindDeviceAdminPermission); hasOtherReceivers |= (!actWidgetReceivers && !actDeviceAdminEnabled); } else if (withinService) { hasImeService |= actImeService; hasWallpaperService |= actWallpaperService; hasOtherServices |= (!actImeService && !actWallpaperService); hasAccessibilityService |= (actAccessibilityService && hasBindAccessibilityServicePermission); hasPrintService |= (actPrintService && hasBindPrintServicePermission); hasOtherServices |= (!actImeService && !actWallpaperService && !actAccessibilityService && !actPrintService); } } withinIntentFilter = false; Loading Loading @@ -1166,6 +1186,16 @@ int doDump(Bundle* bundle) " %s\n", error.string()); goto bail; } String8 permission = getAttribute(tree, PERMISSION_ATTR, &error); if (error == "") { if (permission == "android.permission.BIND_DEVICE_ADMIN") { hasBindDeviceAdminPermission = true; } } else { fprintf(stderr, "ERROR getting 'android:permission' attribute for" " receiver '%s': %s\n", receiverName.string(), error.string()); } } else if (tag == "service") { withinService = true; serviceName = getAttribute(tree, NAME_ATTR, &error); Loading @@ -1175,6 +1205,20 @@ int doDump(Bundle* bundle) " service: %s\n", error.string()); goto bail; } String8 permission = getAttribute(tree, PERMISSION_ATTR, &error); if (error == "") { if (permission == "android.permission.BIND_INPUT_METHOD") { hasBindInputMethodPermission = true; } else if (permission == "android.permission.BIND_ACCESSIBILITY_SERVICE") { hasBindAccessibilityServicePermission = true; } else if (permission == "android.permission.BIND_PRINT_SERVICE") { hasBindPrintServicePermission = true; } } else { fprintf(stderr, "ERROR getting 'android:permission' attribute for" " service '%s': %s\n", serviceName.string(), error.string()); } } } else if (withinSupportsInput && tag == "input-type") { String8 name = getAttribute(tree, NAME_ATTR, &error); Loading @@ -1189,7 +1233,13 @@ int doDump(Bundle* bundle) } else if ((depth == 4) && (tag == "intent-filter")) { hasIntentFilter = true; withinIntentFilter = true; actMainActivity = actWidgetReceivers = actImeService = actWallpaperService = false; actMainActivity = false; actWidgetReceivers = false; actImeService = false; actWallpaperService = false; actAccessibilityService = false; actPrintService = false; actDeviceAdminEnabled = false; } else if ((depth == 5) && withinIntentFilter){ String8 action; if (tag == "action") { Loading @@ -1206,12 +1256,18 @@ int doDump(Bundle* bundle) } else if (withinReceiver) { if (action == "android.appwidget.action.APPWIDGET_UPDATE") { actWidgetReceivers = true; } else if (action == "android.app.action.DEVICE_ADMIN_ENABLED") { actDeviceAdminEnabled = true; } } else if (withinService) { if (action == "android.view.InputMethod") { actImeService = true; } else if (action == "android.service.wallpaper.WallpaperService") { actWallpaperService = true; } else if (action == "android.accessibilityservice.AccessibilityService") { actAccessibilityService = true; } else if (action == "android.printservice.PrintService") { actPrintService = true; } } if (action == "android.intent.action.SEARCH") { Loading Loading @@ -1411,12 +1467,21 @@ int doDump(Bundle* bundle) if (hasWidgetReceivers) { printf("app-widget\n"); } if (hasDeviceAdminReceiver) { printf("device-admin\n"); } if (hasImeService) { printf("ime\n"); } if (hasWallpaperService) { printf("wallpaper\n"); } if (hasAccessibilityService) { printf("accessibility\n"); } if (hasPrintService) { printf("print\n"); } if (hasOtherActivities) { printf("other-activities\n"); } Loading