{"record":{"id":"e858d30d994cceba","repo":"microg/GmsCore","slug":"no-package-provided","errorCode":null,"errorMessage":"No package provided","messagePattern":"No package provided","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"play-services-core/src/main/kotlin/org/microg/gms/gcm/PushRegisterService.kt","lineNumber":160,"sourceCode":"            if (ACTION_C2DM_UNREGISTER == intent.action || ACTION_C2DM_REGISTER == intent.action && \"1\" == intent.getStringExtra(EXTRA_DELETE)) {\n                unregister(intent)\n            } else if (ACTION_C2DM_REGISTER == intent.action) {\n                register(intent)\n            }\n        } catch (e: Exception) {\n            Log.w(TAG, e)\n            replyNotAvailable(intent)\n        }\n    }\n\n    private fun replyNotAvailable(intent: Intent) {\n        val outIntent = Intent(ACTION_C2DM_REGISTRATION)\n        outIntent.putExtra(EXTRA_ERROR, PushRegisterManager.attachRequestId(ERROR_SERVICE_NOT_AVAILABLE, intent.requestId))\n        sendReply(intent, intent.appPackageName, outIntent)\n    }\n\n    private suspend fun register(intent: Intent) {\n        val packageName = intent.appPackageName ?: throw RuntimeException(\"No package provided\")\n        ensureAppRegistrationAllowed(this, database, packageName)\n        Log.d(TAG, \"register[req]: \" + intent.toString() + \" extras=\" + intent!!.extras)\n        val bundle = completeRegisterRequest(this, database,\n                RegisterRequest()\n                        .build(this)\n                        .sender(intent.getStringExtra(EXTRA_SENDER))\n                        .checkin(LastCheckinInfo.read(this))\n                        .app(packageName)\n                        .extraParams(intent.extras))\n\n        val outIntent = Intent(ACTION_C2DM_REGISTRATION)\n        outIntent.putExtras(bundle)\n        Log.d(TAG, \"register[res]: \" + outIntent.toString() + \" extras=\" + outIntent.extras)\n        sendReply(intent, packageName, outIntent)\n    }\n\n    private suspend fun unregister(intent: Intent) {\n        val packageName = intent.appPackageName ?: throw RuntimeException(\"No package provided\")","sourceCodeStart":142,"sourceCodeEnd":178,"githubUrl":"https://github.com/microg/GmsCore/blob/157c9d86ac46c195a86c2f15ab55c84036223f95/play-services-core/src/main/kotlin/org/microg/gms/gcm/PushRegisterService.kt#L142-L178","documentation":"PushRegisterService.register(intent) extracts the sender/package from the C2DM register intent and throws with this message when the required package extra is absent — a malformed or incomplete registration intent.","triggerScenarios":"Thrown at play-services-core/src/main/kotlin/org/microg/gms/gcm/PushRegisterService.kt:160 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Include the package/sender extra in the com.google.android.c2dm.intent.REGISTER intent","Reply with ERROR_INVALID_PARAMETERS so the caller can correct the request"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"157c9d86ac46c195a86c2f15ab55c84036223f95","analyzedAt":"2026-09-06T17:27:33.892Z","contentChangedAt":"2026-09-06T17:27:33.892Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}