android - New GCM API Register Unknown Source Error -


i building application uses new google cloud messaging system. have http client server set on live environment allow me test through mobile devices, when ever try register gcm keep getting ioexception states gcm.register() receiving unknown source stopping me getting registration id need allow server send messages device.

i have checked several times see if sender id wrong , have checked on manifest see if have wrong , cannot seem find problem. looking around hasn't provided answer problem.

here log:

07-18 11:34:25.487: w/system.err(3093): java.io.ioexception: main_thread 07-18 11:34:25.497: w/system.err(3093):     @ com.google.android.gms.gcm.googlecloudmessaging.register(unknown source) 07-18 11:34:25.497: w/system.err(3093):     @ koodoo.pushtest.mainactivity.oncreate(mainactivity.java:94) 07-18 11:34:25.497: w/system.err(3093):     @ android.app.activity.performcreate(activity.java:4492) 07-18 11:34:25.497: w/system.err(3093):     @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1049) 07-18 11:34:25.497: w/system.err(3093):     @ android.app.activitythread.performlaunchactivity(activitythread.java:1920) 07-18 11:34:25.497: w/system.err(3093):     @ android.app.activitythread.handlelaunchactivity(activitythread.java:1981) 07-18 11:34:25.497: w/system.err(3093):     @ android.app.activitythread.access$600(activitythread.java:123) 07-18 11:34:25.497: w/system.err(3093):     @ android.app.activitythread$h.handlemessage(activitythread.java:1147) 07-18 11:34:25.497: w/system.err(3093):     @ android.os.handler.dispatchmessage(handler.java:99) 07-18 11:34:25.497: w/system.err(3093):     @ android.os.looper.loop(looper.java:137) 07-18 11:34:25.497: w/system.err(3093):     @ android.app.activitythread.main(activitythread.java:4424) 07-18 11:34:25.497: w/system.err(3093):     @ java.lang.reflect.method.invokenative(native method) 07-18 11:34:25.497: w/system.err(3093):     @ java.lang.reflect.method.invoke(method.java:511) 07-18 11:34:25.497: w/system.err(3093):     @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:784) 07-18 11:34:25.497: w/system.err(3093):     @ com.android.internal.os.zygoteinit.main(zygoteinit.java:551) 07-18 11:34:25.497: w/system.err(3093):     @ dalvik.system.nativestart.main(native method) 

here manifest:

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"     package="koodoo.pushtest"     android:versioncode="1"     android:versionname="1.0" >      <uses-sdk         android:minsdkversion="8"         android:targetsdkversion="17" />      <!-- gcm connects internet services. -->     <uses-permission android:name="android.permission.internet" />      <!-- gcm requires google account. -->     <uses-permission android:name="android.permission.get_accounts" />      <!-- keeps processor sleeping when message received. -->     <uses-permission android:name="android.permission.wake_lock" />      <!-- creates custom permission app can receive messages. -->     <permission         android:name="koodoo.pushtest.permission.c2d_message"         android:protectionlevel="signature" />      <uses-permission android:name="koodoo.pushtest.permission.c2d_message" />      <!-- app has permission register , receive data message. -->     <uses-permission android:name="com.google.android.c2dm.permission.receive" />      <!-- network state permissions detect internet status -->     <uses-permission android:name="android.permission.access_network_state" />      <!-- permission vibrate -->     <uses-permission android:name="android.permission.vibrate" />      <application         android:allowbackup="true"         android:icon="@drawable/ic_launcher"         android:label="@string/app_name"         android:theme="@style/apptheme" >         <activity             android:name="koodoo.pushtest.mainactivity"             android:label="@string/app_name" >          </activity>          <receiver             android:name="com.google.android.gcm.gcmbroadcastreceiver"             android:permission="com.google.android.c2dm.permission.send" >             <intent-filter>                  <!-- receives actual messages. -->                 <action android:name="com.google.android.c2dm.intent.receive" />                 <!-- receives registration id. -->                 <action android:name="com.google.android.c2dm.intent.registration" />                  <category android:name="koodoo.pushtest" />             </intent-filter>         </receiver>          <service android:name="com.google.android.gcm.gcmintentservice" />          <activity             android:name="koodoo.pushtest.registeractivity"             android:label="@string/title_activity_register" >              <intent-filter>                 <action android:name="android.intent.action.main" />                  <category android:name="android.intent.category.launcher" />             </intent-filter>         </activity>     </application>  </manifest> 

any fix appreciated.

that's error getting :

java.io.ioexception: main_thread 

it means calling register method main thread, not allowed. should call thread.

public static final string error_main_thread

gcm methods blocking. should not run them in main thread or in broadcast receivers. constant value: "main_thread"

here's code sample gcm documentation :

/**  * registers application gcm servers asynchronously.  * <p>  * stores registration id, app versioncode, , expiration time in   * application's shared preferences.  */ private void registerbackground() {     new asynctask() {         @override         protected string doinbackground(void... params) {             string msg = "";             try {                 if (gcm == null) {                     gcm = googlecloudmessaging.getinstance(context);                 }                 regid = gcm.register(sender_id);                 msg = "device registered, registration id=" + regid;                  // should send registration id server on http,                 // can use gcm/http or ccs send messages app.                  // demo: don't need send because device                 // send upstream messages server echo message                 // using 'from' address in message.                  // save regid - no need register again.                 setregistrationid(context, regid);             } catch (ioexception ex) {                 msg = "error :" + ex.getmessage();             }             return msg;         }          @override         protected void onpostexecute(string msg) {             mdisplay.append(msg + "\n");         }     }.execute(null, null, null); } 

Comments

Popular posts from this blog

How to mention the localhost in android -

php - Calling a template part from a post -

c# - String.format() DateTime With Arabic culture -