Android GCM注册ID错误
我有一台已经在GCM注册的设备。我尝试过搜索,但没有找到任何类似的问题。大多数用户似乎在获取getRegistrationId以返回非空字符串时遇到问题。你知道这会导致错误的原因吗Android GCM注册ID错误,android,registration,google-cloud-messaging,Android,Registration,Google Cloud Messaging,我有一台已经在GCM注册的设备。我尝试过搜索,但没有找到任何类似的问题。大多数用户似乎在获取getRegistrationId以返回非空字符串时遇到问题。你知道这会导致错误的原因吗 public class UploadOption extends Activity{ Intent extras = getIntent(); String optionid = extras.getStringExtra("KEY_OPTION"); String duration = e
public class UploadOption extends Activity{
Intent extras = getIntent();
String optionid = extras.getStringExtra("KEY_OPTION");
String duration = extras.getStringExtra("KEY_DURATION");
String reward = extras.getStringExtra("KEY_REWARD");
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.debug_layout);
final String regId = GCMRegistrar.getRegistrationId(this);
TextView tvDebug = (TextView) findViewById(R.id.tvDebug);
tvDebug.setText(regId);
// Stores option id, php grabs option.
//new Upload().execute();
}
}
错误日志如下所示:
01-18 18:02:51.756: D/AndroidRuntime(4478): Shutting down VM
01-18 18:02:51.756: W/dalvikvm(4478): threadid=1: thread exiting with uncaught exception (group=0x4001e578)
01-18 18:02:51.803: E/AndroidRuntime(4478): FATAL EXCEPTION: main
01-18 18:02:51.803: E/AndroidRuntime(4478): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.matt.drapp/com.matt.drapp.UploadOption}: java.lang.NullPointerException
01-18 18:02:51.803: E/AndroidRuntime(4478): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1573)
01-18 18:02:51.803: E/AndroidRuntime(4478): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
01-18 18:02:51.803: E/AndroidRuntime(4478): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-18 18:02:51.803: E/AndroidRuntime(4478): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
01-18 18:02:51.803: E/AndroidRuntime(4478): at android.os.Handler.dispatchMessage(Handler.java:99)
01-18 18:02:51.803: E/AndroidRuntime(4478): at android.os.Looper.loop(Looper.java:130)
01-18 18:02:51.803: E/AndroidRuntime(4478): at android.app.ActivityThread.main(ActivityThread.java:3687)
01-18 18:02:51.803: E/AndroidRuntime(4478): at java.lang.reflect.Method.invokeNative(Native Method)
01-18 18:02:51.803: E/AndroidRuntime(4478): at java.lang.reflect.Method.invoke(Method.java:507)
01-18 18:02:51.803: E/AndroidRuntime(4478): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
01-18 18:02:51.803: E/AndroidRuntime(4478): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
01-18 18:02:51.803: E/AndroidRuntime(4478): at dalvik.system.NativeStart.main(Native Method)
01-18 18:02:51.803: E/AndroidRuntime(4478): Caused by: java.lang.NullPointerException
01-18 18:02:51.803: E/AndroidRuntime(4478): at com.matt.drapp.UploadOption.<init>(UploadOption.java:32)
01-18 18:02:51.803: E/AndroidRuntime(4478): at java.lang.Class.newInstanceImpl(Native Method)
01-18 18:02:51.803: E/AndroidRuntime(4478): at java.lang.Class.newInstance(Class.java:1409)
01-18 18:02:51.803: E/AndroidRuntime(4478): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
01-18 18:02:51.803: E/AndroidRuntime(4478): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1565)
01-18 18:02:51.803: E/AndroidRuntime(4478): ... 11 more
01-18 18:02:51.756:D/AndroidRuntime(4478):关闭虚拟机
01-18 18:02:51.756:W/dalvikvm(4478):threadid=1:线程以未捕获异常退出(组=0x4001e578)
01-18 18:02:51.803:E/AndroidRuntime(4478):致命异常:主
01-18 18:02:51.803:E/AndroidRuntime(4478):java.lang.RuntimeException:无法实例化活动组件信息{com.matt.drapp/com.matt.drapp.UploadOption}:java.lang.NullPointerException
01-18 18:02:51.803:E/AndroidRuntime(4478):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1573)
01-18 18:02:51.803:E/AndroidRuntime(4478):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
01-18 18:02:51.803:E/AndroidRuntime(4478):在android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-18 18:02:51.803:E/AndroidRuntime(4478):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
01-18 18:02:51.803:E/AndroidRuntime(4478):位于android.os.Handler.dispatchMessage(Handler.java:99)
01-18 18:02:51.803:E/AndroidRuntime(4478):在android.os.Looper.loop(Looper.java:130)上
01-18 18:02:51.803:E/AndroidRuntime(4478):位于android.app.ActivityThread.main(ActivityThread.java:3687)
01-18 18:02:51.803:E/AndroidRuntime(4478):位于java.lang.reflect.Method.Invokenactive(本机方法)
01-18 18:02:51.803:E/AndroidRuntime(4478):位于java.lang.reflect.Method.invoke(Method.java:507)
01-18 18:02:51.803:E/AndroidRuntime(4478):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
01-18 18:02:51.803:E/AndroidRuntime(4478):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
01-18 18:02:51.803:E/AndroidRuntime(4478):在dalvik.system.NativeStart.main(本机方法)
01-18 18:02:51.803:E/AndroidRuntime(4478):由以下原因引起:java.lang.NullPointerException
01-18 18:02:51.803:E/AndroidRuntime(4478):在com.matt.drapp.UploadOption。(UploadOption.java:32)
01-18 18:02:51.803:E/AndroidRuntime(4478):位于java.lang.Class.newInstanceImpl(本机方法)
01-18 18:02:51.803:E/AndroidRuntime(4478):位于java.lang.Class.newInstance(Class.java:1409)
01-18 18:02:51.803:E/AndroidRuntime(4478):在android.app.Instrumentation.newActivity(Instrumentation.java:1021)上
01-18 18:02:51.803:E/AndroidRuntime(4478):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1565)
01-18 18:02:51.803:E/AndroidRuntime(4478):。。。还有11个
示例中哪一行导致NullPointerException。因为如果只是找不到textView,那么可能会导致整个应用程序崩溃,因为您尝试设置文本,但它是空对象
因此,首先,注释掉textview的内容,看看它是否仍然有效。如果不是这样,您能告诉我们您班上的第32行是哪一行吗?因为它显然与这里的不同。问题是由于
意图造成的。记住,只有在onCreate()
之后才初始化活动,并且您正试图在活动初始化之前获取意图值
将下面的代码放入onCreate()中代码>
Intent extras = getIntent();
String optionid = extras.getStringExtra("KEY_OPTION");
String duration = extras.getStringExtra("KEY_DURATION");
String reward = extras.getStringExtra("KEY_REWARD");
它应该可以工作。问题是GetRegistrationID返回null。这是因为您在实际向GCM服务器注册并接收对GCMinentService的onRegistered回调之前,正在activity类中调用它。如果getRegistrationID返回null,则应该启动一个异步任务来调用gcmregistar.register
按照说明操作:谢谢,就这样!有时候,这只需要另一双眼睛。