• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105<html>
106<head>
107<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
108
109<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
110<title>GCMRegistrar | Android Developers</title>
111
112<!-- STYLESHEETS -->
113<link rel="stylesheet"
114href="//fonts.googleapis.com/css?family=Roboto:regular,medium,thin,italic,mediumitalic,bold" title="roboto">
115<link href="/assets/css/default.css" rel="stylesheet" type="text/css">
116
117
118
119<!-- JAVASCRIPT -->
120<script src="//www.google.com/jsapi" type="text/javascript"></script>
121<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
122<script type="text/javascript">
123  var toRoot = "/";
124
125  var devsite = false;
126
127</script>
128<script src="/assets/js/docs.js" type="text/javascript"></script>
129
130<script src="/gms_navtree_data.js" type="text/javascript"></script>
131<script src="/gcm_navtree_data.js" type="text/javascript"></script>
132
133
134<script type="text/javascript">
135  var _gaq = _gaq || [];
136  _gaq.push(['_setAccount', 'UA-5831155-1']);
137  _gaq.push(['_trackPageview']);
138
139  (function() {
140    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
141    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
142    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
143  })();
144</script>
145</head>
146<body class="gc-documentation google
147  develop" itemscope itemtype="http://schema.org/Article">
148  <div id="doc-api-level" class="" style="display:none"></div>
149  <a name="top"></a>
150
151
152    <!-- Header -->
153    <div id="header">
154        <div class="wrap" id="header-wrap">
155          <div class="col-3 logo">
156          <a href="/index.html">
157            <img src="/assets/images/dac_logo.png" width="123" height="25" alt="Android Developers" />
158          </a>
159          <div class="btn-quicknav" id="btn-quicknav">
160          	<a href="#" class="arrow-inactive">Quicknav</a>
161			      <a href="#" class="arrow-active">Quicknav</a>
162          </div>
163          </div>
164            <ul class="nav-x col-9">
165                <li class="design">
166                  <a href="/design/index.html"
167                  zh-TW-lang="設計"
168                  zh-CN-lang="设计"
169                  ru-lang="Проектирование"
170                  ko-lang="디자인"
171                  ja-lang="設計"
172                  es-lang="Diseñar"
173                  >Design</a></li>
174                <li class="develop"><a href="/develop/index.html" class="selected"
175                  zh-TW-lang="開發"
176                  zh-CN-lang="开发"
177                  ru-lang="Разработка"
178                  ko-lang="개발"
179                  ja-lang="開発"
180                  es-lang="Desarrollar"
181                  >Develop</a></li>
182                <li class="distribute last"><a href="/distribute/index.html"
183                  zh-TW-lang="發佈"
184                  zh-CN-lang="分发"
185                  ru-lang="Распространение"
186                  ko-lang="배포"
187                  ja-lang="配布"
188                  es-lang="Distribuir"
189                  >Distribute</a></li>
190            </ul>
191
192            <!-- New Search -->
193            <div class="menu-container">
194            <div class="moremenu">
195    <div id="more-btn"></div>
196  </div>
197  <div class="morehover" id="moremenu">
198    <div class="top"></div>
199    <div class="mid">
200      <div class="header">Links</div>
201      <ul>
202        <li><a href="https://play.google.com/apps/publish/">Google Play Developer Console</a></li>
203        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
204        <li><a href="/about/index.html">About Android</a></li>
205      </ul>
206      <div class="header">Android Sites</div>
207      <ul>
208        <li><a href="http://www.android.com">Android.com</a></li>
209        <li class="active"><a>Android Developers</a></li>
210        <li><a href="http://source.android.com">Android Open Source Project</a></li>
211      </ul>
212
213
214
215
216        <div class="header">Language</div>
217          <div id="language" class="locales">
218            <select name="language" onChange="changeLangPref(this.value, true)">
219                <option value="en">English</option>
220                <option value="es">Español</option>
221                <option value="ja">日本語</option>
222                <option value="ko">한국어</option>
223                <option value="ru">Русский</option>
224                <option value="zh-CN">中文 (中国)</option>
225                <option value="zh-TW">中文 (台灣)</option>
226            </select>
227          </div>
228        <script type="text/javascript">
229          <!--
230          loadLangPref();
231            //-->
232        </script>
233
234
235
236
237      <br class="clearfix" />
238    </div>
239    <div class="bottom"></div>
240  </div>
241  <div class="search" id="search-container">
242    <div class="search-inner">
243      <div id="search-btn"></div>
244      <div class="left"></div>
245      <form onsubmit="return submit_search()">
246        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
247onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
248onkeydown="return search_changed(event, true, '/')"
249onkeyup="return search_changed(event, false, '/')" />
250      </form>
251      <div class="right"></div>
252        <a class="close hide">close</a>
253        <div class="left"></div>
254        <div class="right"></div>
255    </div>
256  </div>
257  <div id="search_filtered_wrapper">
258    <div id="search_filtered_div" class="no-display">
259        <ul id="search_filtered">
260        </ul>
261    </div>
262  </div>
263
264  </div>
265  <!-- /New Search>
266
267
268          <!-- Expanded quicknav -->
269           <div id="quicknav" class="col-9">
270                <ul>
271                    <li class="design">
272                      <ul>
273                        <li><a href="/design/index.html">Get Started</a></li>
274                        <li><a href="/design/style/index.html">Style</a></li>
275                        <li><a href="/design/patterns/index.html">Patterns</a></li>
276                        <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
277                        <li><a href="/design/downloads/index.html">Downloads</a></li>
278                        <li><a href="/design/videos/index.html">Videos</a></li>
279                      </ul>
280                    </li>
281                    <li class="develop">
282                      <ul>
283                        <li><a href="/training/index.html"
284                          zh-TW-lang="訓練課程"
285                          zh-CN-lang="培训"
286                          ru-lang="Курсы"
287                          ko-lang="교육"
288                          ja-lang="トレーニング"
289                          es-lang="Capacitación"
290                          >Training</a></li>
291                        <li><a href="/guide/components/index.html"
292                          zh-TW-lang="API 指南"
293                          zh-CN-lang="API 指南"
294                          ru-lang="Руководства по API"
295                          ko-lang="API 가이드"
296                          ja-lang="API ガイド"
297                          es-lang="Guías de la API"
298                          >API Guides</a></li>
299                        <li><a href="/reference/packages.html"
300                          zh-TW-lang="參考資源"
301                          zh-CN-lang="参考"
302                          ru-lang="Справочник"
303                          ko-lang="참조문서"
304                          ja-lang="リファレンス"
305                          es-lang="Referencia"
306                          >Reference</a></li>
307                        <li><a href="/tools/index.html"
308                          zh-TW-lang="相關工具"
309                          zh-CN-lang="工具"
310                          ru-lang="Инструменты"
311                          ko-lang="도구"
312                          ja-lang="ツール"
313                          es-lang="Herramientas"
314                          >Tools</a>
315                          <ul><li><a href="/sdk/index.html">Get the SDK</a></li></ul>
316                        </li>
317                        <li><a href="/google/index.html">Google Services</a>
318                        </li>
319                      </ul>
320                    </li>
321                    <li class="distribute last">
322                      <ul>
323                        <li><a href="/distribute/index.html">Google Play</a></li>
324                        <li><a href="/distribute/googleplay/publish/index.html">Publishing</a></li>
325                        <li><a href="/distribute/googleplay/promote/index.html">Promoting</a></li>
326                        <li><a href="/distribute/googleplay/quality/index.html">App Quality</a></li>
327                        <li><a href="/distribute/googleplay/spotlight/index.html">Spotlight</a></li>
328                        <li><a href="/distribute/open.html">Open Distribution</a></li>
329                      </ul>
330                    </li>
331                </ul>
332          </div>
333          <!-- /Expanded quicknav -->
334        </div>
335    </div>
336    <!-- /Header -->
337
338
339  <div id="searchResults" class="wrap" style="display:none;">
340          <h2 id="searchTitle">Results</h2>
341          <div id="leftSearchControl" class="search-control">Loading...</div>
342  </div>
343
344
345
346
347    <!-- Secondary x-nav -->
348    <div id="nav-x">
349        <div class="wrap">
350            <ul class="nav-x col-9 develop" style="width:100%">
351                <li><a href="/training/index.html"
352                  zh-TW-lang="訓練課程"
353                  zh-CN-lang="培训"
354                  ru-lang="Курсы"
355                  ko-lang="교육"
356                  ja-lang="トレーニング"
357                  es-lang="Capacitación"
358                  >Training</a></li>
359                <li><a href="/guide/components/index.html"
360                  zh-TW-lang="API 指南"
361                  zh-CN-lang="API 指南"
362                  ru-lang="Руководства по API"
363                  ko-lang="API 가이드"
364                  ja-lang="API ガイド"
365                  es-lang="Guías de la API"
366                  >API Guides</a></li>
367                <li><a href="/reference/packages.html"
368                  zh-TW-lang="參考資源"
369                  zh-CN-lang="参考"
370                  ru-lang="Справочник"
371                  ko-lang="참조문서"
372                  ja-lang="リファレンス"
373                  es-lang="Referencia"
374                  >Reference</a></li>
375                <li><a href="/tools/index.html"
376                  zh-TW-lang="相關工具"
377                  zh-CN-lang="工具"
378                  ru-lang="Инструменты"
379                  ko-lang="도구"
380                  ja-lang="ツール"
381                  es-lang="Herramientas"
382                  >Tools</a></li>
383                <li><a href="/google/index.html" class="selected"
384                  >Google Services</a>
385                </li>
386            </ul>
387        </div>
388
389    </div>
390    <!-- /Sendondary x-nav -->
391
392
393
394
395
396  <div class="wrap clearfix" id="body-content">
397    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
398      <div id="devdoc-nav" class="scroll-pane">
399<a class="totop" href="#top" data-g-event="left-nav-top">to top</a>
400
401
402
403<ul id="nav">
404  <li class="nav-section">
405    <div class="nav-section-header empty"><a href="/google/index.html">
406        <span class="en">Overview</span>
407      </a></div>
408  </li>
409
410  <li class="nav-section">
411    <div class="nav-section-header"><a href="/google/play-services/index.html">
412      <span class="en">Google Play Services</span></a>
413    </div>
414    <ul>
415      <li><a href="/google/play-services/setup.html">
416          <span class="en">Setup</span></a>
417      </li>
418
419      <li><a href="/google/play-services/auth.html">
420          <span class="en">Authentication</span></a>
421      </li>
422
423      <li><a href="/google/play-services/plus.html">
424          <span class="en">Google+</span></a>
425      </li>
426
427      <li><a href="/google/play-services/maps.html">
428          <span class="en">Google Maps</span></a>
429      </li>
430
431      <li id="gms-tree-list" class="nav-section">
432        <div class="nav-section-header">
433          <a href="/reference/gms-packages.html">
434            <span class="en">Reference</span>
435          </a>
436        <div>
437      </li>
438
439    </ul>
440  </li>
441
442
443  <li class="nav-section">
444    <div class="nav-section-header"><a href="/google/play/billing/index.html">
445      <span class="en">Google Play In-app Billing</span></a>
446    </div>
447    <ul>
448      <li><a href="/google/play/billing/billing_overview.html">
449              <span class="en">Overview</span></a>
450      </li>
451      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html">
452              <span class="en">Version 3 API</span></a></div>
453              <ul>
454              <li><a href="/google/play/billing/billing_integrate.html">
455              <span class="en">Implementing the API</span></a></li>
456              <li><a href="/google/play/billing/billing_reference.html">
457              <span class="en">Reference</span></a></li>
458              </ul>
459      </li>
460      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
461              <span class="en">Version 2 API</span></a></div>
462              <ul>
463              <li><a href="/google/play/billing/v2/billing_integrate.html">
464              <span class="en">Implementing the API</span></a></li>
465              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
466              <span class="en">Subscriptions</span></a></li>
467              <li><a href="/google/play/billing/v2/billing_reference.html">
468              <span class="en">Reference</span></a></li>
469              </ul>
470      </li>
471      <li><a href="/google/play/billing/billing_best_practices.html">
472              <span class="en">Security and Design</span></a>
473      </li>
474      <li><a href="/google/play/billing/billing_testing.html">
475              <span class="en">Testing In-app Billing</span></a>
476      </li>
477      <li><a href="/google/play/billing/billing_admin.html">
478              <span class="en">Administering In-app Billing</span></a>
479      </li>
480      <li><a href="/google/play/billing/versions.html">
481              <span class="en">Version Notes</span></a>
482      </li>
483    </ul>
484  </li>
485
486  <li class="nav-section">
487    <div class="nav-section-header"><a href="/google/play/dist.html">
488      <span class="en">Google Play Distribution</span></a>
489    </div>
490    <ul>
491      <li><a href="/google/play/filters.html">
492          <span class="en">Filters on Google Play</span></a>
493      </li>
494
495      <li><a href="/google/play/publishing/multiple-apks.html">
496          <span class="en">Multiple APK Support</span></a>
497      </li>
498      <li><a href="/google/play/expansion-files.html">
499          <span class="en">APK Expansion Files</span></a>
500      </li>
501      <li class="nav-section">
502        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
503          <span class="en">Application Licensing</span></a>
504        </div>
505        <ul>
506          <li><a href="/google/play/licensing/overview.html">
507              <span class="en">Licensing Overview</span></a>
508          </li>
509          <li><a href="/google/play/licensing/setting-up.html">
510              <span class="en">Setting Up for Licensing</span></a>
511          </li>
512          <li><a href="/google/play/licensing/adding-licensing.html">
513              <span class="en">Adding Licensing to Your App</span></a>
514          </li>
515          <li><a href="/google/play/licensing/licensing-reference.html">
516              <span class="en">Licensing Reference</span></a>
517          </li>
518        </ul>
519      </li>
520    </ul>
521  </li>
522
523  <li class="nav-section">
524      <div class="nav-section-header"><a href="/google/gcm/index.html">
525        <span class="en">Google Cloud Messaging</span></a>
526      </div>
527      <ul>
528        <li><a href="/google/gcm/gs.html">
529            <span class="en">Getting Started</span></a>
530        </li>
531        <li><a href="/google/gcm/gcm.html">
532            <span class="en">Architectural Overview</span></a>
533        </li>
534        <li><a href="/google/gcm/demo.html">
535            <span class="en">Demo App Tutorial</span></a>
536        </li>
537        <li><a href="/google/gcm/adv.html">
538            <span class="en">Advanced Topics</span></a>
539        </li>
540        <li><a href="/google/gcm/c2dm.html">
541            <span class="en">Migration</span></a>
542        </li>
543        <li id="gcm-tree-list" class="nav-section">
544          <div class="nav-section-header">
545            <a href="/reference/gcm-packages.html">
546              <span class="en">Reference</span>
547            </a>
548          <div>
549        </li>
550      </ul>
551  </li>
552
553
554  <li class="nav-section">
555    <div class="nav-section-header"><a href="/google/backup/index.html">
556      Android Backup Service</a>
557    </div>
558    <ul>
559      <li><a href="/google/backup/signup.html">
560          Register</a>
561      </li>
562    </ul>
563  </li>
564
565</ul>
566
567<script type="text/javascript">
568<!--
569    buildToggleLists();
570    changeNavLang(getLangPref());
571//-->
572</script>
573
574
575
576
577      </div>
578      <script type="text/javascript">
579       showGoogleRefTree();
580
581      </script>
582
583    </div> <!-- end side-nav -->
584    <script>
585      $(document).ready(function() {
586        scrollIntoView("devdoc-nav");
587        });
588    </script>
589
590
591
592
593
594
595<div class="col-12"  id="doc-col">
596
597<div id="api-info-block">
598
599
600
601
602
603
604
605
606
607
608
609<div class="sum-details-links">
610
611Summary:
612
613
614
615
616
617  <a href="#constants">Constants</a>
618
619
620
621
622
623
624
625
626  &#124; <a href="#pubmethods">Methods</a>
627
628
629
630
631  &#124; <a href="#inhmethods">Inherited Methods</a>
632
633&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
634
635</div><!-- end sum-details-links -->
636<div class="api-level">
637
638
639
640
641</div>
642</div><!-- end api-info-block -->
643
644
645<!-- ======== START OF CLASS DATA ======== -->
646
647<div id="jd-header">
648    public
649
650    final
651
652    class
653<h1 itemprop="name">GCMRegistrar</h1>
654
655
656
657
658    extends Object<br/>
659
660
661
662
663
664
665
666
667
668</div><!-- end header -->
669
670<div id="naMessage"></div>
671
672<div id="jd-content" class="api apilevel-">
673<table class="jd-inheritance-table">
674
675
676    <tr>
677
678        <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
679    </tr>
680
681
682    <tr>
683
684            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
685
686        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gcm.GCMRegistrar</td>
687    </tr>
688
689
690</table>
691
692
693
694
695
696
697
698<div class="jd-descr">
699
700
701<h2>Class Overview</h2>
702<p itemprop="articleBody">Utilities for device registration.
703 <p>
704 <strong>Note:</strong> this class uses a private <code><a href="/reference/android/content/SharedPreferences.html">SharedPreferences</a></code>
705 object to keep track of the registration token.
706</p>
707
708
709
710
711
712</div><!-- jd-descr -->
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729<div class="jd-descr">
730
731
732<h2>Summary</h2>
733
734
735
736
737
738
739
740
741
742
743
744
745
746<!-- =========== ENUM CONSTANT SUMMARY =========== -->
747<table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr>
748
749
750
751    <tr class="alt-color api apilevel-" >
752        <td class="jd-typecol">long</td>
753        <td class="jd-linkcol"><a href="/reference/com/google/android/gcm/GCMRegistrar.html#DEFAULT_ON_SERVER_LIFESPAN_MS">DEFAULT_ON_SERVER_LIFESPAN_MS</a></td>
754        <td class="jd-descrcol" width="100%">Default lifespan (7 days) of the <code><a href="/reference/com/google/android/gcm/GCMRegistrar.html#isRegisteredOnServer(android.content.Context)">isRegisteredOnServer(Context)</a></code>
755 flag until it is considered expired.</td>
756    </tr>
757
758
759
760</table>
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777<!-- ========== METHOD SUMMARY =========== -->
778<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
779
780
781
782
783    <tr class="alt-color api apilevel-" >
784        <td class="jd-typecol"><nobr>
785
786
787
788            static
789
790            void</nobr>
791        </td>
792        <td class="jd-linkcol" width="100%"><nobr>
793        <span class="sympad"><a href="/reference/com/google/android/gcm/GCMRegistrar.html#checkDevice(android.content.Context)">checkDevice</a></span>(Context context)</nobr>
794
795        <div class="jd-descrdiv">Checks if the device has the proper dependencies installed.</div>
796
797  </td></tr>
798
799
800
801    <tr class=" api apilevel-" >
802        <td class="jd-typecol"><nobr>
803
804
805
806            static
807
808            void</nobr>
809        </td>
810        <td class="jd-linkcol" width="100%"><nobr>
811        <span class="sympad"><a href="/reference/com/google/android/gcm/GCMRegistrar.html#checkManifest(android.content.Context)">checkManifest</a></span>(Context context)</nobr>
812
813        <div class="jd-descrdiv">Checks that the application manifest is properly configured.</div>
814
815  </td></tr>
816
817
818
819    <tr class="alt-color api apilevel-" >
820        <td class="jd-typecol"><nobr>
821
822
823
824            static
825
826            long</nobr>
827        </td>
828        <td class="jd-linkcol" width="100%"><nobr>
829        <span class="sympad"><a href="/reference/com/google/android/gcm/GCMRegistrar.html#getRegisterOnServerLifespan(android.content.Context)">getRegisterOnServerLifespan</a></span>(Context context)</nobr>
830
831        <div class="jd-descrdiv">Gets how long (in milliseconds) the <code><a href="/reference/com/google/android/gcm/GCMRegistrar.html#isRegistered(android.content.Context)">isRegistered(Context)</a></code>
832 property is valid.</div>
833
834  </td></tr>
835
836
837
838    <tr class=" api apilevel-" >
839        <td class="jd-typecol"><nobr>
840
841
842
843            static
844
845            String</nobr>
846        </td>
847        <td class="jd-linkcol" width="100%"><nobr>
848        <span class="sympad"><a href="/reference/com/google/android/gcm/GCMRegistrar.html#getRegistrationId(android.content.Context)">getRegistrationId</a></span>(Context context)</nobr>
849
850        <div class="jd-descrdiv">Gets the current registration id for application on GCM service.</div>
851
852  </td></tr>
853
854
855
856    <tr class="alt-color api apilevel-" >
857        <td class="jd-typecol"><nobr>
858
859
860
861            static
862
863            boolean</nobr>
864        </td>
865        <td class="jd-linkcol" width="100%"><nobr>
866        <span class="sympad"><a href="/reference/com/google/android/gcm/GCMRegistrar.html#isRegistered(android.content.Context)">isRegistered</a></span>(Context context)</nobr>
867
868        <div class="jd-descrdiv">Checks whether the application was successfully registered on GCM
869 service.</div>
870
871  </td></tr>
872
873
874
875    <tr class=" api apilevel-" >
876        <td class="jd-typecol"><nobr>
877
878
879
880            static
881
882            boolean</nobr>
883        </td>
884        <td class="jd-linkcol" width="100%"><nobr>
885        <span class="sympad"><a href="/reference/com/google/android/gcm/GCMRegistrar.html#isRegisteredOnServer(android.content.Context)">isRegisteredOnServer</a></span>(Context context)</nobr>
886
887        <div class="jd-descrdiv">Checks whether the device was successfully registered in the server side,
888 as set by <code><a href="/reference/com/google/android/gcm/GCMRegistrar.html#setRegisteredOnServer(android.content.Context, boolean)">setRegisteredOnServer(Context, boolean)</a></code>.</div>
889
890  </td></tr>
891
892
893
894    <tr class="alt-color api apilevel-" >
895        <td class="jd-typecol"><nobr>
896
897            synchronized
898
899            static
900
901            void</nobr>
902        </td>
903        <td class="jd-linkcol" width="100%"><nobr>
904        <span class="sympad"><a href="/reference/com/google/android/gcm/GCMRegistrar.html#onDestroy(android.content.Context)">onDestroy</a></span>(Context context)</nobr>
905
906        <div class="jd-descrdiv">Clear internal resources.</div>
907
908  </td></tr>
909
910
911
912    <tr class=" api apilevel-" >
913        <td class="jd-typecol"><nobr>
914
915
916
917            static
918
919            void</nobr>
920        </td>
921        <td class="jd-linkcol" width="100%"><nobr>
922        <span class="sympad"><a href="/reference/com/google/android/gcm/GCMRegistrar.html#register(android.content.Context, java.lang.String...)">register</a></span>(Context context, String... senderIds)</nobr>
923
924        <div class="jd-descrdiv">Initiate messaging registration for the current application.</div>
925
926  </td></tr>
927
928
929
930    <tr class="alt-color api apilevel-" >
931        <td class="jd-typecol"><nobr>
932
933
934
935            static
936
937            void</nobr>
938        </td>
939        <td class="jd-linkcol" width="100%"><nobr>
940        <span class="sympad"><a href="/reference/com/google/android/gcm/GCMRegistrar.html#setRegisterOnServerLifespan(android.content.Context, long)">setRegisterOnServerLifespan</a></span>(Context context, long lifespan)</nobr>
941
942        <div class="jd-descrdiv">Sets how long (in milliseconds) the <code><a href="/reference/com/google/android/gcm/GCMRegistrar.html#isRegistered(android.content.Context)">isRegistered(Context)</a></code>
943 flag is valid.</div>
944
945  </td></tr>
946
947
948
949    <tr class=" api apilevel-" >
950        <td class="jd-typecol"><nobr>
951
952
953
954            static
955
956            void</nobr>
957        </td>
958        <td class="jd-linkcol" width="100%"><nobr>
959        <span class="sympad"><a href="/reference/com/google/android/gcm/GCMRegistrar.html#setRegisteredOnServer(android.content.Context, boolean)">setRegisteredOnServer</a></span>(Context context, boolean flag)</nobr>
960
961        <div class="jd-descrdiv">Sets whether the device was successfully registered in the server side.</div>
962
963  </td></tr>
964
965
966
967    <tr class="alt-color api apilevel-" >
968        <td class="jd-typecol"><nobr>
969
970
971
972            static
973
974            void</nobr>
975        </td>
976        <td class="jd-linkcol" width="100%"><nobr>
977        <span class="sympad"><a href="/reference/com/google/android/gcm/GCMRegistrar.html#unregister(android.content.Context)">unregister</a></span>(Context context)</nobr>
978
979        <div class="jd-descrdiv">Unregister the application.</div>
980
981  </td></tr>
982
983
984
985</table>
986
987
988
989
990
991
992
993<!-- ========== METHOD SUMMARY =========== -->
994<table id="inhmethods" class="jd-sumtable"><tr><th>
995  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
996  <div style="clear:left;">Inherited Methods</div></th></tr>
997
998
999<tr class="api apilevel-" >
1000<td colspan="12">
1001  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
1002          ><img id="inherited-methods-java.lang.Object-trigger"
1003          src="/assets/images/triangle-closed.png"
1004          class="jd-expando-trigger-img" /></a>
1005From class
1006
1007  java.lang.Object
1008
1009<div id="inherited-methods-java.lang.Object">
1010  <div id="inherited-methods-java.lang.Object-list"
1011        class="jd-inheritedlinks">
1012  </div>
1013  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
1014    <table class="jd-sumtable-expando">
1015
1016
1017
1018
1019    <tr class="alt-color api apilevel-" >
1020        <td class="jd-typecol"><nobr>
1021
1022
1023
1024
1025
1026            Object</nobr>
1027        </td>
1028        <td class="jd-linkcol" width="100%"><nobr>
1029        <span class="sympad">clone</span>()</nobr>
1030
1031  </td></tr>
1032
1033
1034
1035    <tr class=" api apilevel-" >
1036        <td class="jd-typecol"><nobr>
1037
1038
1039
1040
1041
1042            boolean</nobr>
1043        </td>
1044        <td class="jd-linkcol" width="100%"><nobr>
1045        <span class="sympad">equals</span>(Object arg0)</nobr>
1046
1047  </td></tr>
1048
1049
1050
1051    <tr class="alt-color api apilevel-" >
1052        <td class="jd-typecol"><nobr>
1053
1054
1055
1056
1057
1058            void</nobr>
1059        </td>
1060        <td class="jd-linkcol" width="100%"><nobr>
1061        <span class="sympad">finalize</span>()</nobr>
1062
1063  </td></tr>
1064
1065
1066
1067    <tr class=" api apilevel-" >
1068        <td class="jd-typecol"><nobr>
1069
1070
1071            final
1072
1073
1074            Class&lt;?&gt;</nobr>
1075        </td>
1076        <td class="jd-linkcol" width="100%"><nobr>
1077        <span class="sympad">getClass</span>()</nobr>
1078
1079  </td></tr>
1080
1081
1082
1083    <tr class="alt-color api apilevel-" >
1084        <td class="jd-typecol"><nobr>
1085
1086
1087
1088
1089
1090            int</nobr>
1091        </td>
1092        <td class="jd-linkcol" width="100%"><nobr>
1093        <span class="sympad">hashCode</span>()</nobr>
1094
1095  </td></tr>
1096
1097
1098
1099    <tr class=" api apilevel-" >
1100        <td class="jd-typecol"><nobr>
1101
1102
1103            final
1104
1105
1106            void</nobr>
1107        </td>
1108        <td class="jd-linkcol" width="100%"><nobr>
1109        <span class="sympad">notify</span>()</nobr>
1110
1111  </td></tr>
1112
1113
1114
1115    <tr class="alt-color api apilevel-" >
1116        <td class="jd-typecol"><nobr>
1117
1118
1119            final
1120
1121
1122            void</nobr>
1123        </td>
1124        <td class="jd-linkcol" width="100%"><nobr>
1125        <span class="sympad">notifyAll</span>()</nobr>
1126
1127  </td></tr>
1128
1129
1130
1131    <tr class=" api apilevel-" >
1132        <td class="jd-typecol"><nobr>
1133
1134
1135
1136
1137
1138            String</nobr>
1139        </td>
1140        <td class="jd-linkcol" width="100%"><nobr>
1141        <span class="sympad">toString</span>()</nobr>
1142
1143  </td></tr>
1144
1145
1146
1147    <tr class="alt-color api apilevel-" >
1148        <td class="jd-typecol"><nobr>
1149
1150
1151            final
1152
1153
1154            void</nobr>
1155        </td>
1156        <td class="jd-linkcol" width="100%"><nobr>
1157        <span class="sympad">wait</span>()</nobr>
1158
1159  </td></tr>
1160
1161
1162
1163    <tr class=" api apilevel-" >
1164        <td class="jd-typecol"><nobr>
1165
1166
1167            final
1168
1169
1170            void</nobr>
1171        </td>
1172        <td class="jd-linkcol" width="100%"><nobr>
1173        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
1174
1175  </td></tr>
1176
1177
1178
1179    <tr class="alt-color api apilevel-" >
1180        <td class="jd-typecol"><nobr>
1181
1182
1183            final
1184
1185
1186            void</nobr>
1187        </td>
1188        <td class="jd-linkcol" width="100%"><nobr>
1189        <span class="sympad">wait</span>(long arg0)</nobr>
1190
1191  </td></tr>
1192
1193
1194</table>
1195  </div>
1196</div>
1197</td></tr>
1198
1199
1200</table>
1201
1202
1203</div><!-- jd-descr (summary) -->
1204
1205<!-- Details -->
1206
1207
1208
1209
1210
1211
1212
1213
1214<!-- XML Attributes -->
1215
1216
1217<!-- Enum Values -->
1218
1219
1220<!-- Constants -->
1221
1222
1223<!-- ========= ENUM CONSTANTS DETAIL ======== -->
1224<h2>Constants</h2>
1225
1226
1227
1228
1229<A NAME="DEFAULT_ON_SERVER_LIFESPAN_MS"></A>
1230
1231<div class="jd-details api apilevel-">
1232    <h4 class="jd-details-title">
1233      <span class="normal">
1234        public
1235        static
1236        final
1237        long
1238      </span>
1239        DEFAULT_ON_SERVER_LIFESPAN_MS
1240    </h4>
1241      <div class="api-level">
1242
1243
1244
1245
1246      </div>
1247    <div class="jd-details-descr">
1248
1249  <div class="jd-tagdata jd-tagdescr"><p>Default lifespan (7 days) of the <code><a href="/reference/com/google/android/gcm/GCMRegistrar.html#isRegisteredOnServer(android.content.Context)">isRegisteredOnServer(Context)</a></code>
1250 flag until it is considered expired.
1251</p></div>
1252
1253
1254        <div class="jd-tagdata">
1255        <span class="jd-tagtitle">Constant Value: </span>
1256        <span>
1257
1258                604800000
1259                (0x00000000240c8400)
1260
1261        </span>
1262        </div>
1263
1264    </div>
1265</div>
1266
1267
1268
1269
1270<!-- Fields -->
1271
1272
1273<!-- Public ctors -->
1274
1275
1276
1277<!-- ========= CONSTRUCTOR DETAIL ======== -->
1278<!-- Protected ctors -->
1279
1280
1281
1282<!-- ========= METHOD DETAIL ======== -->
1283<!-- Public methdos -->
1284
1285<h2>Public Methods</h2>
1286
1287
1288
1289<A NAME="checkDevice(android.content.Context)"></A>
1290
1291<div class="jd-details api apilevel-">
1292    <h4 class="jd-details-title">
1293      <span class="normal">
1294        public
1295        static
1296
1297
1298
1299        void
1300      </span>
1301      <span class="sympad">checkDevice</span>
1302      <span class="normal">(Context context)</span>
1303    </h4>
1304      <div class="api-level">
1305        <div></div>
1306
1307
1308
1309      </div>
1310    <div class="jd-details-descr">
1311
1312  <div class="jd-tagdata jd-tagdescr"><p>Checks if the device has the proper dependencies installed.
1313 <p>
1314 This method should be called when the application starts to verify that
1315 the device supports GCM.</p></div>
1316  <div class="jd-tagdata">
1317      <h5 class="jd-tagtitle">Parameters</h5>
1318      <table class="jd-tagtable">
1319        <tr>
1320          <th>context</td>
1321          <td>application context.</td>
1322        </tr>
1323      </table>
1324  </div>
1325  <div class="jd-tagdata">
1326      <h5 class="jd-tagtitle">Throws</h5>
1327      <table class="jd-tagtable">
1328        <tr>
1329            <th>UnsupportedOperationException</td>
1330            <td>if the device does not support GCM.
1331</td>
1332        </tr>
1333      </table>
1334  </div>
1335
1336    </div>
1337</div>
1338
1339
1340<A NAME="checkManifest(android.content.Context)"></A>
1341
1342<div class="jd-details api apilevel-">
1343    <h4 class="jd-details-title">
1344      <span class="normal">
1345        public
1346        static
1347
1348
1349
1350        void
1351      </span>
1352      <span class="sympad">checkManifest</span>
1353      <span class="normal">(Context context)</span>
1354    </h4>
1355      <div class="api-level">
1356        <div></div>
1357
1358
1359
1360      </div>
1361    <div class="jd-details-descr">
1362
1363  <div class="jd-tagdata jd-tagdescr"><p>Checks that the application manifest is properly configured.
1364 <p>
1365 A proper configuration means:
1366 <ol>
1367    <li>It creates a custom permission called
1368      <code>PACKAGE_NAME.permission.C2D_MESSAGE</code>.
1369    <li>It defines at least one <code><a href="/reference/android/content/BroadcastReceiver.html">BroadcastReceiver</a></code> with category
1370      <code>PACKAGE_NAME</code>.
1371    <li>The <code><a href="/reference/android/content/BroadcastReceiver.html">BroadcastReceiver</a></code>(s) uses the
1372      <code><a href="/reference/com/google/android/gcm/GCMConstants.html#PERMISSION_GCM_INTENTS">com.google.android.gcm.GCMConstants.PERMISSION_GCM_INTENTS</a></code>
1373      permission.
1374    <li>The <code><a href="/reference/android/content/BroadcastReceiver.html">BroadcastReceiver</a></code>(s) handles the 2 GCM intents
1375      (<code><a href="/reference/com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_MESSAGE">com.google.android.gcm.GCMConstants.INTENT_FROM_GCM_MESSAGE</a></code>
1376      and
1377      <code><a href="/reference/com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK">com.google.android.gcm.GCMConstants.INTENT_FROM_GCM_REGISTRATION_CALLBACK</a></code>).
1378 </ol>
1379 ...where <code>PACKAGE_NAME</code> is the application package.
1380 <p>
1381 This method should be used during development time to verify that the
1382 manifest is properly set up, but it doesn't need to be called once the
1383 application is deployed to the users' devices.</p></div>
1384  <div class="jd-tagdata">
1385      <h5 class="jd-tagtitle">Parameters</h5>
1386      <table class="jd-tagtable">
1387        <tr>
1388          <th>context</td>
1389          <td>application context.</td>
1390        </tr>
1391      </table>
1392  </div>
1393  <div class="jd-tagdata">
1394      <h5 class="jd-tagtitle">Throws</h5>
1395      <table class="jd-tagtable">
1396        <tr>
1397            <th>IllegalStateException</td>
1398            <td>if any of the conditions above is not met.
1399</td>
1400        </tr>
1401      </table>
1402  </div>
1403
1404    </div>
1405</div>
1406
1407
1408<A NAME="getRegisterOnServerLifespan(android.content.Context)"></A>
1409
1410<div class="jd-details api apilevel-">
1411    <h4 class="jd-details-title">
1412      <span class="normal">
1413        public
1414        static
1415
1416
1417
1418        long
1419      </span>
1420      <span class="sympad">getRegisterOnServerLifespan</span>
1421      <span class="normal">(Context context)</span>
1422    </h4>
1423      <div class="api-level">
1424        <div></div>
1425
1426
1427
1428      </div>
1429    <div class="jd-details-descr">
1430
1431  <div class="jd-tagdata jd-tagdescr"><p>Gets how long (in milliseconds) the <code><a href="/reference/com/google/android/gcm/GCMRegistrar.html#isRegistered(android.content.Context)">isRegistered(Context)</a></code>
1432 property is valid.</p></div>
1433  <div class="jd-tagdata">
1434      <h5 class="jd-tagtitle">Returns</h5>
1435      <ul class="nolist"><li>value set by <code><a href="/reference/com/google/android/gcm/GCMRegistrar.html#setRegisteredOnServer(android.content.Context, boolean)">setRegisteredOnServer(Context, boolean)</a></code> or
1436      <code><a href="/reference/com/google/android/gcm/GCMRegistrar.html#DEFAULT_ON_SERVER_LIFESPAN_MS">DEFAULT_ON_SERVER_LIFESPAN_MS</a></code> if not set.
1437</li></ul>
1438  </div>
1439
1440    </div>
1441</div>
1442
1443
1444<A NAME="getRegistrationId(android.content.Context)"></A>
1445
1446<div class="jd-details api apilevel-">
1447    <h4 class="jd-details-title">
1448      <span class="normal">
1449        public
1450        static
1451
1452
1453
1454        String
1455      </span>
1456      <span class="sympad">getRegistrationId</span>
1457      <span class="normal">(Context context)</span>
1458    </h4>
1459      <div class="api-level">
1460        <div></div>
1461
1462
1463
1464      </div>
1465    <div class="jd-details-descr">
1466
1467  <div class="jd-tagdata jd-tagdescr"><p>Gets the current registration id for application on GCM service.
1468 <p>
1469 If result is empty, the registration has failed.</p></div>
1470  <div class="jd-tagdata">
1471      <h5 class="jd-tagtitle">Returns</h5>
1472      <ul class="nolist"><li>registration id, or empty string if the registration is not
1473         complete.
1474</li></ul>
1475  </div>
1476
1477    </div>
1478</div>
1479
1480
1481<A NAME="isRegistered(android.content.Context)"></A>
1482
1483<div class="jd-details api apilevel-">
1484    <h4 class="jd-details-title">
1485      <span class="normal">
1486        public
1487        static
1488
1489
1490
1491        boolean
1492      </span>
1493      <span class="sympad">isRegistered</span>
1494      <span class="normal">(Context context)</span>
1495    </h4>
1496      <div class="api-level">
1497        <div></div>
1498
1499
1500
1501      </div>
1502    <div class="jd-details-descr">
1503
1504  <div class="jd-tagdata jd-tagdescr"><p>Checks whether the application was successfully registered on GCM
1505 service.
1506</p></div>
1507
1508    </div>
1509</div>
1510
1511
1512<A NAME="isRegisteredOnServer(android.content.Context)"></A>
1513
1514<div class="jd-details api apilevel-">
1515    <h4 class="jd-details-title">
1516      <span class="normal">
1517        public
1518        static
1519
1520
1521
1522        boolean
1523      </span>
1524      <span class="sympad">isRegisteredOnServer</span>
1525      <span class="normal">(Context context)</span>
1526    </h4>
1527      <div class="api-level">
1528        <div></div>
1529
1530
1531
1532      </div>
1533    <div class="jd-details-descr">
1534
1535  <div class="jd-tagdata jd-tagdescr"><p>Checks whether the device was successfully registered in the server side,
1536 as set by <code><a href="/reference/com/google/android/gcm/GCMRegistrar.html#setRegisteredOnServer(android.content.Context, boolean)">setRegisteredOnServer(Context, boolean)</a></code>.
1537
1538 <p>To avoid the scenario where the device sends the registration to the
1539 server but the server loses it, this flag has an expiration date, which
1540 is <code><a href="/reference/com/google/android/gcm/GCMRegistrar.html#DEFAULT_ON_SERVER_LIFESPAN_MS">DEFAULT_ON_SERVER_LIFESPAN_MS</a></code> by default (but can be changed
1541 by <code><a href="/reference/com/google/android/gcm/GCMRegistrar.html#setRegisterOnServerLifespan(android.content.Context, long)">setRegisterOnServerLifespan(Context, long)</a></code>).
1542</p></div>
1543
1544    </div>
1545</div>
1546
1547
1548<A NAME="onDestroy(android.content.Context)"></A>
1549
1550<div class="jd-details api apilevel-">
1551    <h4 class="jd-details-title">
1552      <span class="normal">
1553        public
1554        static
1555
1556
1557        synchronized
1558        void
1559      </span>
1560      <span class="sympad">onDestroy</span>
1561      <span class="normal">(Context context)</span>
1562    </h4>
1563      <div class="api-level">
1564        <div></div>
1565
1566
1567
1568      </div>
1569    <div class="jd-details-descr">
1570
1571  <div class="jd-tagdata jd-tagdescr"><p>Clear internal resources.
1572
1573 <p>
1574 This method should be called by the main activity's <code>onDestroy()</code>
1575 method.
1576</p></div>
1577
1578    </div>
1579</div>
1580
1581
1582<A NAME="register(android.content.Context, java.lang.String...)"></A>
1583
1584<div class="jd-details api apilevel-">
1585    <h4 class="jd-details-title">
1586      <span class="normal">
1587        public
1588        static
1589
1590
1591
1592        void
1593      </span>
1594      <span class="sympad">register</span>
1595      <span class="normal">(Context context, String... senderIds)</span>
1596    </h4>
1597      <div class="api-level">
1598        <div></div>
1599
1600
1601
1602      </div>
1603    <div class="jd-details-descr">
1604
1605  <div class="jd-tagdata jd-tagdescr"><p>Initiate messaging registration for the current application.
1606 <p>
1607 The result will be returned as an
1608 <code><a href="/reference/com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK">INTENT_FROM_GCM_REGISTRATION_CALLBACK</a></code> intent with
1609 either a <code><a href="/reference/com/google/android/gcm/GCMConstants.html#EXTRA_REGISTRATION_ID">EXTRA_REGISTRATION_ID</a></code> or
1610 <code><a href="/reference/com/google/android/gcm/GCMConstants.html#EXTRA_ERROR">EXTRA_ERROR</a></code>.</p></div>
1611  <div class="jd-tagdata">
1612      <h5 class="jd-tagtitle">Parameters</h5>
1613      <table class="jd-tagtable">
1614        <tr>
1615          <th>context</td>
1616          <td>application context.</td>
1617        </tr>
1618        <tr>
1619          <th>senderIds</td>
1620          <td>Google Project ID of the accounts authorized to send
1621    messages to this application.</td>
1622        </tr>
1623      </table>
1624  </div>
1625  <div class="jd-tagdata">
1626      <h5 class="jd-tagtitle">Throws</h5>
1627      <table class="jd-tagtable">
1628        <tr>
1629            <th>IllegalStateException</td>
1630            <td>if device does not have all GCM
1631             dependencies installed.
1632</td>
1633        </tr>
1634      </table>
1635  </div>
1636
1637    </div>
1638</div>
1639
1640
1641<A NAME="setRegisterOnServerLifespan(android.content.Context, long)"></A>
1642
1643<div class="jd-details api apilevel-">
1644    <h4 class="jd-details-title">
1645      <span class="normal">
1646        public
1647        static
1648
1649
1650
1651        void
1652      </span>
1653      <span class="sympad">setRegisterOnServerLifespan</span>
1654      <span class="normal">(Context context, long lifespan)</span>
1655    </h4>
1656      <div class="api-level">
1657        <div></div>
1658
1659
1660
1661      </div>
1662    <div class="jd-details-descr">
1663
1664  <div class="jd-tagdata jd-tagdescr"><p>Sets how long (in milliseconds) the <code><a href="/reference/com/google/android/gcm/GCMRegistrar.html#isRegistered(android.content.Context)">isRegistered(Context)</a></code>
1665 flag is valid.
1666</p></div>
1667
1668    </div>
1669</div>
1670
1671
1672<A NAME="setRegisteredOnServer(android.content.Context, boolean)"></A>
1673
1674<div class="jd-details api apilevel-">
1675    <h4 class="jd-details-title">
1676      <span class="normal">
1677        public
1678        static
1679
1680
1681
1682        void
1683      </span>
1684      <span class="sympad">setRegisteredOnServer</span>
1685      <span class="normal">(Context context, boolean flag)</span>
1686    </h4>
1687      <div class="api-level">
1688        <div></div>
1689
1690
1691
1692      </div>
1693    <div class="jd-details-descr">
1694
1695  <div class="jd-tagdata jd-tagdescr"><p>Sets whether the device was successfully registered in the server side.
1696</p></div>
1697
1698    </div>
1699</div>
1700
1701
1702<A NAME="unregister(android.content.Context)"></A>
1703
1704<div class="jd-details api apilevel-">
1705    <h4 class="jd-details-title">
1706      <span class="normal">
1707        public
1708        static
1709
1710
1711
1712        void
1713      </span>
1714      <span class="sympad">unregister</span>
1715      <span class="normal">(Context context)</span>
1716    </h4>
1717      <div class="api-level">
1718        <div></div>
1719
1720
1721
1722      </div>
1723    <div class="jd-details-descr">
1724
1725  <div class="jd-tagdata jd-tagdescr"><p>Unregister the application.
1726 <p>
1727 The result will be returned as an
1728 <code><a href="/reference/com/google/android/gcm/GCMConstants.html#INTENT_FROM_GCM_REGISTRATION_CALLBACK">INTENT_FROM_GCM_REGISTRATION_CALLBACK</a></code> intent with an
1729 <code><a href="/reference/com/google/android/gcm/GCMConstants.html#EXTRA_UNREGISTERED">EXTRA_UNREGISTERED</a></code> extra.
1730</p></div>
1731
1732    </div>
1733</div>
1734
1735
1736
1737
1738
1739<!-- ========= METHOD DETAIL ======== -->
1740
1741
1742
1743<!-- ========= END OF CLASS DATA ========= -->
1744<A NAME="navbar_top"></A>
1745
1746
1747<div id="footer" class="wrap" >
1748
1749
1750  <div id="copyright">
1751
1752  Except as noted, this content is licensed under <a
1753  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
1754  For details and restrictions, see the <a href="/license.html">
1755  Content License</a>.
1756  </div>
1757  <div id="build_info">
1758
1759<script src="/timestamp.js" type="text/javascript"></script>
1760<script>document.write(BUILD_TIMESTAMP)</script>
1761
1762  </div>
1763
1764
1765  <div id="footerlinks">
1766
1767  <p>
1768    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
1769    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
1770    <a href="/support.html">Support</a>
1771  </p>
1772  </div>
1773
1774</div> <!-- end footer -->
1775
1776</div> <!-- jd-content -->
1777
1778</div><!-- end doc-content -->
1779
1780</div> <!-- end body-content -->
1781
1782
1783
1784
1785
1786
1787</body>
1788</html>
1789