/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 Ġ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 . Sdk Constants . ANDROID _ URI Ċ import Ġcom . android . Sdk Constants . ATTR _ NAME Ċ import Ġcom . android . Sdk Constants . TAG _ ACTION Ċ import Ġcom . android . Sdk Constants . TAG _ INT ENT _ FILTER Ċ import Ġcom . android . Sdk Constants . TAG _ RECE IVER Ċ import Ġcom . android . tools . lint . detector . api . Category Ċ import Ġcom . android . tools . lint . detector . api . Detector Ċ import Ġcom . android . tools . lint . detector . api . Implementation Ċ 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 . Xml Context Ċ import Ġcom . android . tools . lint . detector . api . Xml Scanner Ċ import Ġcom . android . utils . Xml Utils . getFirst Sub Tag ByName Ċ import Ġcom . android . utils . Xml Utils . getNext Tag ByName Ċ import Ġorg . w 3 c . dom . Element Ċ Ċ /** ĠFlags Ġusage s Ġof ĠC 2 DM , Ġwhich Ġas Ġof ĠP Ġno Ġlonger Ġworks . Ġ*/ Ċ class ĠC 2 dm Detector Ġ: ĠDetector (), ĠXml Scanner Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġget Applicable Elements (): ĠCollection < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( TAG _ RECE IVER ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvisit Element ( context : ĠXml Context , Ġelement : ĠElement ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġattribute Ġ= Ġelement . getAttribute Node NS ( ANDROID _ URI , ĠATTR _ NAME ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Name Ġ= Ġattribute . value ĊĠĠĠĠĠĠĠ Ġif Ġ( receiver Name Ġ!= Ġ" com . google . android . c 2 dm . C 2 D MB roadcast Receiver " Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreceiver Name Ġ!= Ġ" com . google . android . gcm . GCM Broadcast Receiver " ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġhave Receive Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġhave Registration Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġintent Filter Ġ= Ġget First Sub Tag ByName ( element , ĠTAG _ INT ENT _ FILTER ) ĊĠĠĠĠĠĠĠ Ġwhile Ġ( intent Filter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġaction Ġ= Ġget First Sub Tag ByName ( intent Filter , ĠTAG _ ACTION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( action Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Name Ġ= Ġaction . getAttribute NS ( ANDROID _ URI , ĠATTR _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Name Ġ== Ġ" com . google . android . c 2 dm . intent . RECEIVE ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhave Receive Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( action Name Ġ== Ġ" com . google . android . c 2 dm . intent . REGISTR ATION ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhave Registration Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ= ĠgetNext Tag ByName ( action , ĠTAG _ ACTION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent Filter Ġ= ĠgetNext Tag ByName ( intent Filter , ĠTAG _ INT ENT _ FILTER ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( have Receive Ġ&& Ġhave Registration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġ" The ĠC 2 DM Ġlibrary Ġdoes Ġnot Ġwork Ġon ĠAndroid ĠP Ġor Ġnewer Ġdevices ; Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" you Ġshould Ġmigrate Ġto ĠFirebase ĠCloud ĠMessaging Ġto Ġensure Ġreliable Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" message Ġdelivery " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . report ( ISSUE , Ġattribute , Ġcontext . getValue Location ( attribute ), Ġmessage ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠIMP LEMENT ATION Ġ= ĠImplementation ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC 2 dm Detector :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScope . MAN IFEST _ SCOPE ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠISS UE Ġ= ĠIssue . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġ" Using C 2 DM ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbrief Description Ġ= Ġ" Using ĠC 2 DM ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexplanation Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThe ĠC 2 DM Ġlibrary Ġdoes Ġnot Ġwork Ġon ĠAndroid ĠP Ġor Ġnewer Ġdevices ; Ġ\ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġyou Ġshould Ġmigrate Ġto ĠFirebase ĠCloud ĠMessaging Ġto Ġensure Ġreliable Ġmessage Ġdelivery . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmore Info Ġ= Ġ" https :// developers . google . com / cloud - messaging / c 2 dm ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcategory Ġ= ĠCategory . SECURITY , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpriority Ġ= Ġ 8 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseverity Ġ= ĠSeverity . ERROR , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimplementation Ġ= ĠIMP LEMENT ATION ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ