在我的Android項目中,我有一個MapView(API v2),可以在最近的設備上正常工作(S. Galaxy S3,Google Play Services是最新的),但如果我在舊設備上試用(LG-C550,Google Play服務不是最新的),我會通過一個按鈕來獲取錯誤消息來更新服務。問題在於點擊它後應用程序崩潰。從Google Maps API v2更新Google Play服務中的崩潰MapView
我的堆棧跟蹤:
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)
的運行時異常來自於谷歌地圖視圖(由庫創建),嘗試啓動谷歌從我的應用程序上下文播放服務更新不FLAG_ACTIVITY_NEW_TASK。
您認爲是否有辦法糾正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);
}
}