Android 从Google Maps API v2 MapView更新Google Play服务时崩溃
在我的Android项目中,我有一个MapView(API v2),它在最近的设备上运行良好(S.Galaxy S3,Google Play服务是最新的),但如果我在旧设备上尝试它(LG-C550,Google Play服务不是最新的),我会收到一条错误消息,并用一个按钮更新服务。问题是,应用程序在单击后崩溃 我的堆栈跟踪:Android 从Google Maps API v2 MapView更新Google Play服务时崩溃,android,google-maps,android-intent,Android,Google Maps,Android Intent,在我的Android项目中,我有一个MapView(API v2),它在最近的设备上运行良好(S.Galaxy S3,Google Play服务是最新的),但如果我在旧设备上尝试它(LG-C550,Google Play服务不是最新的),我会收到一条错误消息,并用一个按钮更新服务。问题是,应用程序在单击后崩溃 我的堆栈跟踪: 02-16 06:47:51.537: E/AndroidRuntime(4078): FATAL EXCEPTION: main 02-16 06:47:51.537:
02-16 06:47:51.537: E/AndroidRuntime(4078): FATAL EXCEPTION: main
02-16 06:47:51.537: E/AndroidRuntime(4078): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?
02-16 06:47:51.537: E/AndroidRuntime(4078): at android.app.ContextImpl.startActivity(ContextImpl.java:648)
02-16 06:47:51.537: E/AndroidRuntime(4078): at android.content.ContextWrapper.startActivity(ContextWrapper.java:258)
02-16 06:47:51.537: E/AndroidRuntime(4078): at com.google.android.gms.dynamic.a$5.onClick(Unknown Source)
02-16 06:47:51.537: E/AndroidRuntime(4078): at android.view.View.performClick(View.java:2552)
02-16 06:47:51.537: E/AndroidRuntime(4078): at android.view.View$PerformClick.run(View.java:8960)
02-16 06:47:51.537: E/AndroidRuntime(4078): at android.os.Handler.handleCallback(Handler.java:587)
02-16 06:47:51.537: E/AndroidRuntime(4078): at android.os.Handler.dispatchMessage(Handler.java:92)
02-16 06:47:51.537: E/AndroidRuntime(4078): at android.os.Looper.loop(Looper.java:123)
02-16 06:47:51.537: E/AndroidRuntime(4078): at android.app.ActivityThread.main(ActivityThread.java:4627)
02-16 06:47:51.537: E/AndroidRuntime(4078): at java.lang.reflect.Method.invokeNative(Native Method)
02-16 06:47:51.537: E/AndroidRuntime(4078): at java.lang.reflect.Method.invoke(Method.java:521)
02-16 06:47:51.537: E/AndroidRuntime(4078): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:876)
02-16 06:47:51.537: E/AndroidRuntime(4078): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:634)
02-16 06:47:51.537: E/AndroidRuntime(4078): at dalvik.system.NativeStart.main(Native Method)
运行时异常来自GoogleMaps视图(由库创建),该视图尝试从我的应用程序上下文启动GooglePlay服务更新程序,而不使用FLAG_ACTIVITY_NEW_任务
你认为是否有一种方法可以纠正Google Play库抛出的异常
我的MapActivity类:
import android.app.Activity;
import android.os.Bundle;
import android.widget.RelativeLayout;
import com.google.android.gms.maps.MapView;
public class MapActivity extends Activity {
private MapView mapView = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new RelativeLayout(getApplicationContext()) {
{
addView(mapView = new MapView(getApplicationContext()) {
{
setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
}
});
}
});
mapView.onCreate(savedInstanceState);
}
@Override
protected void onDestroy() {
super.onDestroy();
mapView.onDestroy();
}
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
@Override
protected void onPause() {
super.onPause();
mapView.onPause();
}
@Override
public void onLowMemory() {
super.onLowMemory();
mapView.onLowMemory();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
}
我发现我的错误与谷歌集团的主题: 我必须给出活动上下文,而不是应用程序上下文来创建MapView实例:
addView(mapView = new MapView(getApplicationContext()) {
替换为:
addView(mapView = new MapView(MapActivity.this) {
如果谷歌团队看到这篇文章,你能在你的文档中精确描述它吗?我认为这是非常重要的