{"record":{"id":"36ef602833eaa677","repo":"microg/GmsCore","slug":"no-service-found","errorCode":null,"errorMessage":"No service found","messagePattern":"No service found","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"play-services-gcm/src/main/java/com/google/android/gms/gcm/GcmNetworkManager.java","lineNumber":238,"sourceCode":"\n    private boolean packageExists(String packageName) {\n        try {\n            PackageManager pm = context.getPackageManager();\n            pm.getPackageInfo(packageName, 0);\n            return true;\n        } catch (PackageManager.NameNotFoundException e) {\n            return false;\n        }\n    }\n\n    private void validateService(String serviceName) {\n        if (serviceName == null) throw new NullPointerException(\"No service provided\");\n        Intent taskIntent = new Intent(ACTION_TASK_READY);\n        taskIntent.setPackage(context.getPackageName());\n        PackageManager pm = context.getPackageManager();\n        List<ResolveInfo> serviceResolves = pm.queryIntentServices(taskIntent, 0);\n        if (serviceResolves == null || serviceResolves.isEmpty())\n            throw new IllegalArgumentException(\"No service found\");\n        for (ResolveInfo info : serviceResolves) {\n            if (serviceName.equals(info.serviceInfo.name)) return;\n        }\n        throw new IllegalArgumentException(\"Service not supported.\");\n    }\n}\n","sourceCodeStart":220,"sourceCodeEnd":245,"githubUrl":"https://github.com/microg/GmsCore/blob/157c9d86ac46c195a86c2f15ab55c84036223f95/play-services-gcm/src/main/java/com/google/android/gms/gcm/GcmNetworkManager.java#L220-L245","documentation":"GcmNetworkManager.validateService throws IllegalArgumentException when PackageManager.queryIntentServices finds no service in the app that handles the ACTION_TASK_READY intent. GCM requires at least one GcmTaskService declared in the manifest to receive scheduled work.","triggerScenarios":"Calling schedule/cancelTask/cancelAllTasks when no GcmTaskService is registered in AndroidManifest.xml with an intent filter for com.google.android.gms.gcm.ACTION_TASK_READY, or the query returns null/empty.","commonSituations":"Manifest service entry removed or never added; service declared only in a debug flavor's manifest; package rename that broke the manifest entry; missing intent-filter.","solutions":["Add the service to AndroidManifest.xml with <service android:name=\".MyTaskService\" android:exported=\"true\" android:permission=\"com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE\"><intent-filter><action android:name=\"com.google.android.gms.gcm.ACTION_TASK_READY\"/></intent-filter></service>.","Verify the manifest merge actually includes the service (check merged manifest in build output).","Confirm the intent-filter action string is exactly com.google.android.gms.gcm.ACTION_TASK_READY."],"exampleFix":"// before\n// manifest missing the service -> \"No service found\"\n\n// after\n<service\n    android:name=\"com.example.MyTaskService\"\n    android:exported=\"true\"\n    android:permission=\"com.google.android.gms.permission.BIND_NETWORK_TASK_SERVICE\">\n    <intent-filter>\n        <action android:name=\"com.google.android.gms.gcm.ACTION_TASK_READY\"/>\n    </intent-filter>\n</service>","handlingStrategy":"validation","validationCode":"ResolveInfo info = getPackageManager().resolveService(\n    new Intent(\"com.google.android.gms.gcm.ACTION_TASK_READY\").setPackage(getPackageName()), 0);\nif (info == null) {\n    throw new IllegalStateException(\"GcmTaskService not declared in manifest\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    manager.schedule(task);\n} catch (IllegalArgumentException e) {\n    Log.e(TAG, \"No GcmTaskService registered: \" + e.getMessage());\n}","preventionTips":["Declare a GcmTaskService with the ACTION_TASK_READY intent filter in the main manifest","Inspect the merged manifest after builds","Keep the intent-filter action string exact"],"tags":["gcm","android","manifest","service-not-registered"],"backgroundTag":"resource-not-found","analyzedSha":"157c9d86ac46c195a86c2f15ab55c84036223f95","analyzedAt":"2026-09-06T17:27:33.892Z","contentChangedAt":"2026-09-06T17:27:33.892Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}