我正在尝试使用新的api在我的应用中显示地图,但我得到的只是:
“Google Play服务的未知问题”
这是我的清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.monitoringsensors"
android:versionCode="1"
android:versionName="1.0"
>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16"/>
<uses-permission android:name="android.permission.INTERNET"/>
<permission
android:name="com.example.monitoringsensors.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.example.monitoringsensors.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<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"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
>
<activity
android:name="com.example.monitoringsensors.Title"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.example.monitoringsensors.HttpExample"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.HTTPEXAMPLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="com.example.monitoringsensors.TakeSomeData"
android:label="@string/app_name"
android:theme="@android:style/Theme.Dialog">
<intent-filter>
<action android:name="android.intent.action.TAKESOMEDATA" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<meta-data android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyCW3iv83siHrkWM6Q2qV4YcXk27CZWwmqc"></meta-data>
</application>
</manifest>
这是XML文件:
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>
这个类就像这样调用:
public class HttpExample extends android.support.v4.app.FragmentActivity {...}
谢谢伙伴们!
答案 0 :(得分:1)
您需要验证地图的可用性 在您与GoogleMap对象进行互动之前,您需要确认可以实例化对象,并确保Google Play服务组件已正确安装在目标设备上。您可以通过调用MapFragment.getMap()或MapView.getMap()方法并检查返回的对象是否为null来验证GoogleMap是否可用。 https://developers.google.com/maps/documentation/android/map#verify_map_availability
答案 1 :(得分:0)
我个人使用此代码检查Google Play服务,我在运行2.3.3的真实设备和各种版本的操作系统上测试模拟器,它可以防止模拟器破坏,因为它们没有更新支持Android Google地图v2的Google Play服务。
protected boolean readyToGo() {
String TAG_ERROR_DIALOG_FRAGMENT="errorDialog";
int status= GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (status == ConnectionResult.SUCCESS) {
return(true);
}
else if (GooglePlayServicesUtil.isUserRecoverableError(status)) {
ErrorDialogFragment.newInstance(status)
.show(getSupportFragmentManager(),
TAG_ERROR_DIALOG_FRAGMENT);
}
else {
Toast.makeText(this, "no maps", Toast.LENGTH_LONG).show();
finish();
}
return(false);
}
String TAG_ERROR_DIALOG_FRAGMENT="errorDialog";
int status= GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (status == ConnectionResult.SUCCESS) {
return(true);
}
else if (GooglePlayServicesUtil.isUserRecoverableError(status)) {
ErrorDialogFragment.newInstance(status)
.show(getSupportFragmentManager(),
TAG_ERROR_DIALOG_FRAGMENT);
}
else {
Toast.makeText(this, "no maps", Toast.LENGTH_LONG).show();
finish();
}
return(false);
}
如果它能够显示地图,则返回true,表示设备具有所需的Google Play服务;如果不能,则返回false,这就是Eclipse中标准模拟器的情况,现在就是这样。