【发布时间】:2013-04-30 00:25:45
【问题描述】:
我已经在我的应用程序中实现了 android Google maps V2,并且它在大多数设备(Galaxy Ace Plus、Galaxy 7inch Tab、Sony Xperia Z)上都能正常工作我测试。但它不适用于 HTC Desire。我已经交叉验证了该设备中也安装了 Google Play 服务。我花了很多时间寻找解决方案。下面是我的实现。
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SupportMapFragment fragment = new SupportMapFragment();
getSupportFragmentManager().beginTransaction()
.add(android.R.id.content, fragment).commit();
}
}
下面是activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/the_map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:cameraTilt="45"
map:cameraZoom="2" />
这里是清单文件。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.raj.googlemapsv2test"
android:versionCode="1"
android:versionName="1.0" >
<permission
android:name="com.raj.googlemapsv2test.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.raj.googlemapsv2test.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<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" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyDD6bvUVkTk2UzOLpojdeBtlh5xBYDhy6E" />
<activity
android:name="com.raj.googlemapsv2test.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
当我检查日志时,它显示以下错误行。
Could not find class 'maps.i.k', referenced from method maps.z.ag.a
Failed to load map. Could not contact Google servers.
Failed to load map. Could not contact Google servers.
最后带着一点疑问,我更新了设备中的 goggle 地图应用程序,之后它就可以工作了。 因此,当任何设备发现此类问题时,我想向用户显示更新警报。但无法知道如何检查。那么任何人都可以提出一些方法来查找设备中的goggle maps app和android goggle play services是否支持这个android Goggle Maps V2 与否。
我们将不胜感激任何解决方案。
【问题讨论】:
-
我在 HTC Desire 上遇到了类似的问题,除了我说“找不到类 'maps.af.k',引用自方法 maps.ag.an.a”。它还说它“无法解析 Lmaps/p/w 的超类;(734)”。像你说的那样更新谷歌地图应用并没有解决问题,我仍然看不到地图。
标签: android google-maps google-maps-android-api-2 google-play-services