某些设备上的MapView / MapActivity崩溃

时间:2012-04-18 08:39:07

标签: android crash android-mapview oncreate mapactivity

我已经浏览了Google的MapView教程,它可以在模拟器上运行,例如在我的HTC Flyer上运行。但由于某种原因,它在我的手机(三星Galaxy I9000)上启动时会立即崩溃。

崩溃发生在那里,因为在开始时onCreate()接收的Bundle为null。我正在编译Android 2.3.3。它也安装在手机上。 Flyer使用Android 3.0

对于这个奇怪的问题我非常感谢。

这是精确的Logcat输出:

04-18 10:52:26.019: E/AndroidRuntime(1461): FATAL EXCEPTION: main
04-18 10:52:26.019: E/AndroidRuntime(1461): java.lang.RuntimeException: Unable to start activity ComponentInfo{bernd.konnerth/bernd.konnerth.HelloMapViewActivity}: java.lang.NullPointerException
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android.os.Looper.loop(Looper.java:123)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android.app.ActivityThread.main(ActivityThread.java:3687)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at java.lang.reflect.Method.invokeNative(Native Method)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at java.lang.reflect.Method.invoke(Method.java:507)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at dalvik.system.NativeStart.main(Native Method)
04-18 10:52:26.019: E/AndroidRuntime(1461): Caused by: java.lang.NullPointerException
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android.app.ContextImpl.openFileOutput(ContextImpl.java:495)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android.content.ContextWrapper.openFileOutput(ContextWrapper.java:158)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android_maps_conflict_avoidance.com.google.common.io.android.AndroidPersistentStore.writeBlockX(AndroidPersistentStore.java:140)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android_maps_conflict_avoidance.com.google.common.io.android.AndroidPersistentStore.writeBlock(AndroidPersistentStore.java:169)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android_maps_conflict_avoidance.com.google.common.io.PreferenceStore.ensurePreferencesLoaded(PreferenceStore.java:178)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android_maps_conflict_avoidance.com.google.common.io.PreferenceStore.readPreference(PreferenceStore.java:86)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android_maps_conflict_avoidance.com.google.common.io.BasePersistentStore.readPreference(BasePersistentStore.java:41)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android_maps_conflict_avoidance.com.google.common.StaticUtil.readPreferenceAsDataInput(StaticUtil.java:271)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.loadOrRequestCookie(DataRequestDispatcher.java:493)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.<init>(DataRequestDispatcher.java:390)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.createInstance(DataRequestDispatcher.java:341)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at com.google.android.maps.MapActivity.createMap(MapActivity.java:548)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at com.google.android.maps.MapActivity.onCreate(MapActivity.java:422)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at bernd.konnerth.HelloMapViewActivity.onCreate(HelloMapViewActivity.java:15)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-18 10:52:26.019: E/AndroidRuntime(1461):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
04-18 10:52:26.019: E/AndroidRuntime(1461):     ... 11 more

谢谢, 贝恩德

1 个答案:

答案 0 :(得分:3)

我明白了!你猜怎么着!这是重要的包裹名称!!!

我在以下网址找到了Google地图示例:

<强> C:\ Android的SDK \插件\插件-google_apis-google_inc_-10 \样品\ MapsDemo

然后我把它剥了下来,直到它几乎与我的相同。我使用 bernd.konnerth 作为包名。但是出于一些非常疯狂的原因,显然三星手机(以及可能还有其他设备)并不接受这一点,只是在启动时抛出NullPointerException,没有任何进一步提示可能指向包名称问题。

当我使用 com.bernd.konnerth 时,一切正常。显然前面必须有 com。。但要注意!似乎还有其他名称组合不起作用。我偶然发现,例如 com.android.wifi 也不起作用!甚至认为这个包似乎不存在于android命名空间中。

这样的事情真的会让人发疯! : - (

尽管如此,感谢您的所有快速回复!

贝恩德