谷歌地图仅显示Android白屏

Dam*_*era 5 java xml android google-maps

我做了al程序添加谷歌地图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;
Run Code Online (Sandbox Code Playgroud)

这是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" />
    ......
    .....
Run Code Online (Sandbox Code Playgroud)

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

GooglePlayServicesUtil
                .isGooglePlayServicesAvailable(getApplicationContext());

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

这里是布局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" />
Run Code Online (Sandbox Code Playgroud)

Joe*_*Joe 5

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

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

adb logcat | grep Maps
Run Code Online (Sandbox Code Playgroud)

如果你看到这样的话:

E/Google Maps Android API(): Authorization failure.
Run Code Online (Sandbox Code Playgroud)

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


iag*_*een 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();
 }
Run Code Online (Sandbox Code Playgroud)

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