{"record":{"id":"99655bd8a0359d1a","repo":"MuntashirAkon/AppManager","slug":"cannot-create-template-for-network-type-networktype","errorCode":null,"errorMessage":"Cannot create template for network type ${networkType}'.","messagePattern":"Cannot create template for network type (.+?)'\\.","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"app/src/main/java/io/github/muntashirakon/AppManager/compat/NetworkStatsManagerCompat.java","lineNumber":49,"sourceCode":"        return networkStats;\n    }\n\n    @NonNull\n    private static NetworkTemplate createTemplate(int networkType, @Nullable String subscriberId) {\n        final NetworkTemplate template;\n        switch (networkType) {\n            case NetworkCapabilities.TRANSPORT_CELLULAR:\n                template = subscriberId == null\n                        ? NetworkTemplate.buildTemplateMobileWildcard()\n                        : NetworkTemplate.buildTemplateMobileAll(subscriberId);\n                break;\n            case NetworkCapabilities.TRANSPORT_WIFI:\n                template = TextUtils.isEmpty(subscriberId)\n                        ? NetworkTemplate.buildTemplateWifiWildcard()\n                        : new NetworkTemplate(NetworkTemplate.MATCH_WIFI, subscriberId, null);\n                break;\n            default:\n                throw new IllegalArgumentException(\"Cannot create template for network type \" + networkType + \"'.\");\n        }\n        return template;\n    }\n}\n","sourceCodeStart":31,"sourceCodeEnd":54,"githubUrl":"https://github.com/MuntashirAkon/AppManager/blob/0152f468fc9463ee02dc2ca83f6fe4989a2c4ca5/app/src/main/java/io/github/muntashirakon/AppManager/compat/NetworkStatsManagerCompat.java#L31-L54","documentation":"NetworkStatsManagerCompat.createTemplate maps a NetworkCapabilities transport constant to a NetworkTemplate. When the networkType is not one of the handled transports (TRANSPORT_CELLULAR, TRANSPORT_WIFI, etc.), it throws IllegalArgumentException with this message, since no matching template can be built.","triggerScenarios":"Calling template(networkType, subscriberId) with an unhandled transport constant (e.g. TRANSPORT_BLUETOOTH, TRANSPORT_VPN, TRANSPORT_LOWPAN) that the switch statement's default branch reaches.","commonSituations":"Querying stats for VPN or Bluetooth traffic on newer Android versions; constants added in newer SDK levels but not handled by this compat code; passing a raw int from an unexpected source.","solutions":["Only pass TRANSPORT_WIFI or TRANSPORT_CELLULAR (the handled types) to template().","Add a case for the transport you need, or build a fallback template (e.g. buildTemplateWifiWildcard).","Catch IllegalArgumentException and skip stats collection for that transport type.","Clamp/whitelist the networkType int before the call."],"exampleFix":"// before\nNetworkTemplate t = NetworkStatsManagerCompat.template(networkType, subId);\n// after\nNetworkTemplate t;\nif (networkType == NetworkCapabilities.TRANSPORT_WIFI\n        || networkType == NetworkCapabilities.TRANSPORT_CELLULAR) {\n    t = NetworkStatsManagerCompat.template(networkType, subId);\n} else {\n    t = NetworkTemplate.buildTemplateWifiWildcard();\n}","handlingStrategy":"validation","validationCode":"if (networkType != NetworkCapabilities.TRANSPORT_WIFI\n        && networkType != NetworkCapabilities.TRANSPORT_CELLULAR) {\n    throw new IllegalArgumentException(\"Unsupported transport: \" + networkType);\n}","typeGuard":null,"tryCatchPattern":"try {\n    NetworkTemplate t = NetworkStatsManagerCompat.template(networkType, subId);\n} catch (IllegalArgumentException e) {\n    NetworkTemplate t = NetworkTemplate.buildTemplateWifiWildcard();\n}","preventionTips":["Whitelist supported transport constants","Handle new SDK transports explicitly","Avoid passing raw ints from untrusted sources"],"tags":["android","network-stats","illegal-argument"],"backgroundTag":"invalid-enum-value","analyzedSha":"0152f468fc9463ee02dc2ca83f6fe4989a2c4ca5","analyzedAt":"2026-09-12T14:03:37.243Z","contentChangedAt":"2026-09-12T14:03:37.243Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}