来自新谷歌地图v2的奇怪例外

时间:2013-02-27 15:43:22

标签: android google-maps-android-api-2

我最近提出了一个使用我的应用程序的用户的以下异常,有没有人有这种例外?

修改 Confirmed Bug

这是stacktrace:

java.lang.RuntimeException: Error receiving broadcast Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x10000000 (has extras) } in maps.z.bz@407c91c8
    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:722)
    at android.os.Handler.handleCallback(Handler.java:587)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:3701)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
    at dalvik.system.NativeStart.main(Native Method)
    Caused by: java.lang.IllegalArgumentException: Receiver not registered:   maps.z.bz@407c91c8
    at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:610)
    at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:822)
    at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:331)
    at maps.z.bz.onReceive(Unknown Source)
    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:709)
    ... 9 more
    java.lang.IllegalArgumentException: Receiver not registered: maps.z.bz@407c91c8
    at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:610)
    at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:822)
    at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:331)
    at maps.z.bz.onReceive(Unknown Source)
    at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:709)
    at android.os.Handler.handleCallback(Handler.java:587)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:123)
    at android.app.ActivityThread.main(ActivityThread.java:3701)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:507)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
    at dalvik.system.NativeStart.main(Native Method)

1 个答案:

答案 0 :(得分:1)

请确认您是否按如下方式编辑了清单文件:

插入元素以包含API密钥作为

的子元素
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="--- your API Key here ---"/>

请记住使用您自己的API密钥替换值。

请注意,您必须在测试中使用调试API密钥(请参阅“为Google Maps Android API v2服务生成调试API密钥”)。然后在发行版APK中替换发行版API密钥(请参阅“为Google Maps Android API v2服务创建和获取API密钥”)。     添加MAPS_RECEIVE。

<permission 
android:name="com.example.androidmapsv2.permission.MAPS_RECEIVE" 
android:protectionLevel="signature"></permission>
<uses-permission 
android:name="com.example.androidmapsv2.permission.MAPS_RECEIVE"/>

其中com.example.androidmapsv2是我的包,请替换为您自己的包名。

添加uses-permission:

<uses-permission
android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission
android:name="android.permission.INTERNET"/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

和可选:

<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION"/> 

指定OpenGL ES 2的使用功能:

<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/> 

修改 你在你的应用程序中使用任何类型的接收器吗?如果是,那么请检查:

然后问题的原因可能在这里:

unregisterReceiver(yourReciever);

如果接收方已经取消注册或未注册,则调用unregisterReceiver会抛出IllegalArgumentException。 确认并告诉我