Androidのプッシュ通知、GCMを登録しちゃう、GCMRegistrationTask.doInBackground
ですが、セキュリティの厳しいスマホだと、これを実行した瞬間にFatal Exceptionで落ちます。
 12-11 17:47:54.279: E/AndroidRuntime(11444): FATAL EXCEPTION: AsyncTask #1
 12-11 17:47:54.279: E/AndroidRuntime(11444): Process: takuru.user, PID: 11444
 12-11 17:47:54.279: E/AndroidRuntime(11444): java.lang.RuntimeException: An error occured while executing doInBackground()
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	at android.os.AsyncTask$3.done(AsyncTask.java:300)
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	at java.util.concurrent.FutureTask.run(FutureTask.java:242)
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	at java.lang.Thread.run(Thread.java:841)
 12-11 17:47:54.279: E/AndroidRuntime(11444): Caused by: java.lang.SecurityException: Not allowed to start service Intent { act=com.google.android.c2dm.
 intent.REGISTER pkg=com.google.android.gms (has extras) } without permission com.google.android.c2dm.permission.RECEIVE
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	at android.app.ContextImpl.startServiceCommon(ContextImpl.java:1562)
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	at android.app.ContextImpl.startService(ContextImpl.java:1539)
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	at android.content.ContextWrapper.startService(ContextWrapper.java:494)
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	at com.google.android.gms.gcm.GoogleCloudMessaging.c(Unknown Source)
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	at com.google.android.gms.gcm.GoogleCloudMessaging.register(Unknown Source)
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	at takuru.user.gcm.GCMRegistrationTask.doInBackground(GCMRegistrationTask.java:43)
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	at takuru.user.gcm.GCMRegistrationTask.doInBackground(GCMRegistrationTask.java:1)
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	at android.os.AsyncTask$2.call(AsyncTask.java:288)
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	at java.util.concurrent.FutureTask.run(FutureTask.java:237)
 12-11 17:47:54.279: E/AndroidRuntime(11444): 	... 3 more
下記に答えがありましたが、
AndroidManifest.xml内のパーミッション設定で、下記のように書かないといけないようです。
<!-- This app has permission to register and receive data message. --> <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
大事なのは、コメントの
This app has permission to register…
ってやつです。
これって、ただのコメントかと思ってましたよね。
実は、大事なものだったみたい…
ちなみに、私はこれ書いてあるのに、なんでブチ落ちるの??
と思ってましたが、なんと、AndroidManifest.xml内に
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
がコメントなしでもう一個書いてあって、そちらを消したら落ちなくなりました!(^▽^)/
