5

我完成了添加谷歌地图 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" />
4

6 回答 6

5

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

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

adb logcat | grep Maps

如果你看到这样的东西:

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

那么这意味着您没有在清单中提供正确的 API 密钥。再次在您的Google API 控制台(在API 访问部分)中检查您是否按照指南中的说明添加了正确的指纹和包名称对。

于 2013-01-19T01:00:33.000 回答
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,您可以在这篇文章中查看答案。

于 2013-01-14T15:22:53.800 回答
1

经过一番研究后,我遇到了同样的白屏问题,我发现我忘记从开发人员控制台启用地图 APi,如下图所示:-

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

在控制台上启用地图 api

于 2015-12-01T18:48:50.733 回答
0

也许您的 Eclipse 的 SHA1 密钥已更改(例如:您可能已删除 Windows 主文件夹中的 .android 文件夹),因此这就是身份验证错误的原因。您必须删除您的密钥并使用 Eclipse 的新 SHA1 创建新密钥。 在此处输入图像描述

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

记住!毕竟,您必须复制新密钥来显示和重建您的项目。祝你好运!

于 2015-01-25T09:03:36.403 回答
0

您缺少 api 密钥

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

在 value 参数中输入 api_key

而且google playService版本也不见了。添加

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

manifest内部<application标签

于 2015-01-25T09:10:05.880 回答
0

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

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

我的链接网站 ===> 点击这里

于 2013-01-16T14:17:34.853 回答