2013-06-23 33 views
1

我试图实现GA运动测量通过这个链接如下这里 https://developers.google.com/analytics/devguides/collection/android/v2/campaigns#campaign-params谷歌Play广告系列衡量 - NullPointerException异常

所以,我已经完成了一切,但它给我的代码NullpointerException

// Get the intent that started this Activity. 
     Intent installIntent = this.getIntent(); 
     Uri Installuri = installIntent.getData(); 

     EasyTracker.getInstance().setContext(this); 
     if (installIntent != null) { 
      EasyTracker.getTracker().setCampaign(Installuri.getPath()); //line 82 
      } 

这是代码,它应该做的一般跟踪。没什么特别的。然而,在上面提到的第82行中,它抛出了NullPointerException。这里是logcat的:

06-23 19:54:54.864: E/AndroidRuntime(13773): at android.os.Looper.loop(Looper.java:137) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at android.app.ActivityThread.main(ActivityThread.java:4441) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at java.lang.reflect.Method.invokeNative(Native Method) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at java.lang.reflect.Method.invoke(Method.java:511) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at dalvik.system.NativeStart.main(Native Method) 
06-23 19:54:54.864: E/AndroidRuntime(13773): Caused by: java.lang.NullPointerException 
06-23 19:54:54.864: E/AndroidRuntime(13773): at uk.co.futurelite.elite.drum.machine.Main.onCreate(Main.java:82) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at android.app.Activity.performCreate(Activity.java:4465) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
06-23 19:54:54.864: E/AndroidRuntime(13773): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931) 
06-23 19:54:54.864: E/AndroidRuntime(13773): ... 11 more 

所以,我IF语句检查它,如果它不是像null

if (installIntent != null) { 

那么,会发生什么,这引发NullPointerException异常?当它通过IF声明。

PS。我没有完成它,直到结束,但可能是我传递一些东西到广播接收器,我可以在logcat中它接收到的竞选成功如下看到:

06-23 19:54:56.544: W/GAV2(13773): Thread[GAThread,5,main]: Service unavailable (code=1), will retry. 
06-23 19:54:56.824: I/GAV2(13773): Thread[GAThread,5,main]: Campaign found: utm_source%3Dxdebugx%26utm_medium%3Dbutton 

,但应用程序本身崩溃和犯规开始。

+0

你能告诉我们什么是空吗?它是EasyTracker.getTracker()吗? –

+0

@StephaneMathis,根据logcat的第82行抛出NullPointer。它是'EasyTracker.getTracker()。setCampaign(Installuri.getPath());'这一行 – Daler

+0

是的,但是这一行是什么?因为getTracker()可以返回null,所以null对象上的setCampain也会给你一个NullPointerException。 –

回答

1

在尝试调用.getPath()之前,您需要检查URI是否为空。在你所提到的文件,它是这样写的:

if (intent.getData() != null) { 
    EasyTracker.getTracker().setCampaign(uri.getPath()); 
} 

在您的代码段使用的风格,它应该是这样的:

// Get the intent that started this Activity. 
Intent installIntent = this.getIntent(); 
Uri Installuri = installIntent.getData(); 

EasyTracker.getInstance().setContext(this); 
if (Installuri != null) { 
    EasyTracker.getTracker().setCampaign(Installuri.getPath()); //line 82 
} 
+0

嗨大卫,我面临类似的问题。每次我都会在Installuri中看到null,即使我可以看到logcat中发现的Campaign。如果我在URI中有null,那么我将如何发送数据到谷歌分析? – Gem

相关问题