谷歌地图仅显示Android白屏

时间:2013-01-09 14:25:49

标签: java android xml google-maps

我做了添加谷歌地图api的程序,但我收到了这个错误。抱歉语言不好。

09 12:20:55.359: W/dalvikvm(5918): Unable to resolve superclass of Lmaps/a/du; (406)
01-09 12:20:55.359: W/dalvikvm(5918): Link of class 'Lmaps/a/du;' failed
01-09 12:20:55.359: W/dalvikvm(5918): Unable to resolve superclass of Lmaps/a/ej; (2358)
01-09 12:20:55.359: W/dalvikvm(5918): Link of class 'Lmaps/a/ej;' failed
01-09 12:20:55.359: W/dalvikvm(5918): Unable to resolve superclass of Lmaps/j/k; (2374)
01-09 12:20:55.359: W/dalvikvm(5918): Link of class 'Lmaps/j/k;' failed
01-09 12:20:55.359: E/dalvikvm(5918): Could not find class 'maps.j.k', referenced from method maps.y.ae.a
01-09 12:20:55.359: W/dalvikvm(5918): VFY: unable to resolve new-instance 3566 (Lmaps/j/k;) in Lmaps/y/ae;

这是manifest.xml

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission android:name="android.permission.INTERNET" />
 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
 <uses-permission android:name="com.comparto.piso.permission.MAPS_RECEIVE" />
 <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

 <permission
        android:name="com.comparto.piso.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

       <application
              ........ >
            <uses-library android:name="com.google.android.maps" />
   <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="api key" />
    ......
    .....

在java代码中,我扩展了FragmentActivity,这里是onCreate代码

GooglePlayServicesUtil
                .isGooglePlayServicesAvailable(getApplicationContext());

        GoogleMap map = ((SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map)).getMap();
        if (map != null) {
            map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        }

这里是布局xml

 <fragment
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:id="@+id/map"
                android:layout_width="fill_parent"
                android:layout_height="300px"
                class="com.google.android.gms.maps.SupportMapFragment" />

6 个答案:

答案 0 :(得分:5)

如果您的设备与Google地图库使用的API级别不同,那么来自Dalvik的所有“无法解析超类xxxx”和“类别xxxx链接失败”都是正常的。

您应该使用以下命令检查是否收到授权失败:

adb logcat | grep Maps

如果你看到这样的话:

E/Google Maps Android API(): Authorization failure.

然后,这意味着您没有在清单中提供正确的API密钥。请再次检查Google API Console(在 API访问部分中)是否已将正确的指纹和包名称对添加为described in the guide

答案 1 :(得分:1)

在没有Google Play API的设备上运行时,通常会出现该错误消息。你打电话给isGooglePlayServicesAvailable(),但你没有检查返回值。您应该检查以确保它在继续之前返回ConnectionResult.SUCCESS。对于其他一些错误代码,您可以通过getErrorDialog()提示他们升级/安装,例如 -

int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
switch (resultCode) {
   case ConnectionResult.SUCCESS: // proceed
      break;
    case ConnectionResult.SERVICE_MISSING:
    case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:
    case ConnectionResult.SERVICE_DISABLED:
          Dialog dialog = GooglePlayServicesUtil.getErrorDialog(resultCode, this, 1);
          dialog.show();
 }

根据Google的说法,Google Play服务API需要“物理开发设备”,因此仿真器不会正式支持它们。因此,如果您在模拟器上运行,几乎可以肯定您缺少所需的服务。人们报告让它在模拟器中工作,但我没有尝试过自己。如果您想查看在模拟器上安装Google Play,可以查看this post中的答案。

答案 2 :(得分:1)

我发现有一些白色屏幕问题后我发现我忘了从开发者控制台启用地图APi,如下图所示: -

我希望你可能有同样的问题,这会有所帮助: -

Map api enable on console

答案 3 :(得分:0)

如果您在布局xml中使用“class =”com.google.android.gms.maps.SupportMapFragment“,那么您现在在manifest.xml中使用Android 3.0或更低版本的android:minSdkVersion。

然后在下面看到我的链接网站,这有助于您了解在设备上运行Google地图之前应该安装和设置的内容。此链接非常简单,您可以获得要在设备上显示谷歌地图的操作。

My linked site ===> just Click here

答案 4 :(得分:0)

也许你的日食的SHA1键被更改了(EX:你可能在windows的主文件夹中删除了.android文件夹)所以这就是它验证错误的原因。您必须删除密钥并使用eclipse的新SHA1创建新密钥。 enter image description here

在此处重新生成新密钥并在几分钟内重新加载此页面,它将更新新密钥: https://console.developers.google.com/project/watchful-net-796/apiui/credential

记住!毕竟,您必须将新密钥复制到清单并重建项目。祝你好运!

答案 5 :(得分:0)

你缺少api密钥

 <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="api key" />

在值参数中输入api_key

google playService版本也缺失了。添加

<meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

manifest标记内的<application