2015-06-19 22 views
0

我在三星手機上開發了Google Map相關應用程序,並在Play商店中發佈,其中顯示了大約7000個支持的設備。當我在三星手機上下載應用程序時,它工作正常,但不適用於Moto和索尼手機。奇怪的應用程序無法在不同的手機上工作

當我嘗試用摩托移動進行調試它顯示「關閉VM」

06-20 00:17:25.276  457-457/com.mycompany.mypackage D/AndroidRuntime﹕ Shutting down VM 
06-20 00:17:25.281  457-457/com.mycompany.mypackage E/AndroidRuntime﹕ FATAL EXCEPTION: main 
Process: com.mycompany.mypackage, PID: 457 
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.mycompany.mypackage/com.mycompany.mypackage.MapsActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2225) 
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2388) 
     at android.app.ActivityThread.access$800(ActivityThread.java:148) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1292) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:135) 
     at android.app.ActivityThread.main(ActivityThread.java:5312) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:372) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference 
     at android.content.ContextWrapper.getPackageName(ContextWrapper.java:131) 
     at android.location.GeocoderParams.<init>(GeocoderParams.java:50) 
     at android.location.Geocoder.<init>(Geocoder.java:83) 
     at com.mycompany.mypackage.MapsActivity.<init>(MapsActivity.java:96) 
     at java.lang.reflect.Constructor.newInstance(Native Method) 
     at java.lang.Class.newInstance(Class.java:1572) 
     at android.app.Instrumentation.newActivity(Instrumentation.java:1088) 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2215) 

+0

沒什麼做什麼設備的運行它,你有一個空指針錯誤代碼,建議您發佈您的代碼 – smoggers

+0

Smoggers,但其對三星工作手機 –

+0

是啊,這很奇怪,雖然再看看堆棧跟蹤錯誤指向地圖/地理編碼,所以很可能其他設備不支持應用程序使用的地圖功能? – smoggers

回答

1

答:向上述奇怪的問題,

我遇到非常奇怪的問題,如上面討論由於Geocoder,我終於找到了它。上述問題的解決方法非常簡單,如下所示:

Geocoder gc = new Geocoder(this,Locale.getDefault());

public class MapsActivity extends FragmentActivity implements .... { 
............... 
Geocoder gc = new Geocoder(this, Locale.getDefault()); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
............ 
     } 
............ 
} 

在全局定義的上述代碼片段Geocoder中。 這不適用於不同的設備。僅適用於三星設備。我找出的解決方案終於適用於所有設備(經過三星,摩托,索尼測試)。

public class MapsActivity extends FragmentActivity implements .... { 
............... 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
............ 
     } 
public void send(View view) { 
    try { 
     Geocoder gc = new Geocoder(this, Locale.getDefault()); 
     List<Address> list = gc.getFromLocationName(message, 1); 
.........} 
    } 
............ 
} 

在上面的代碼片段Geocoder在本地函數內部定義。

此解決方案適用於我。我希望將來有人遇到同樣的問題,可能這個解決方案有幫助。

感謝

+0

你改變了什麼?你可以發佈**之前**和**之後** –

+1

嗨Srinath,我發佈了所有相關的代碼片段 –

+0

不錯的發現的完整描述。永遠不知道在類字段(類成員)的初始化給出的問題 –

相關問題