Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从Google Maps API v2 MapView更新Google Play服务时崩溃_Android_Google Maps_Android Intent - Fatal编程技术网

Android 从Google Maps API v2 MapView更新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:

在我的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: 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) {
如果谷歌团队看到这篇文章,你能在你的文档中精确描述它吗?我认为这是非常重要的