0

在某些设备上,我们的应用程序在启动 Map Activity 时会因 NoClassDefFoundError 而崩溃。

是的,我们拥有运行 MapActivity 所需的权限和库以及所有必需的东西。它在 99.9% 的设备中都能正常工作(所有设备都有谷歌服务......)

但是,有 2-3 种我从未听说过的设备(例如:Prestigio - PAP4040_DUO 或 MID - PAD-FMD700P 或 Rockchip AN9G2)似乎没有谷歌服务,也无法打开地图活动。

有没有机会检测到这一点并可能显示“您的手机不支持谷歌地图,对不起”之类的东西?

(是的,我们可以忽略 2-3 台设备,但我们会尽力支持所有设备)

4

1 回答 1

3

有没有机会检测到这一点并可能显示“您的手机不支持谷歌地图,对不起”之类的东西?

如果你MapActivity没有绑定到启动器图标,也许。我的猜测是您NoClassDefFoundError来自MapActivityMaps V1 SDK 附加组件或其他东西。在这种情况下,Class.forName()在尝试启动任何MapActivity.

此示例项目演示了这一点。启动器图标与一个Theme.NoDisplay活动相关联,该活动具有以下内容onCreate()

  public void onCreate(Bundle instanceState) {
    super.onCreate(instanceState);

    try {
      Class.forName("com.google.android.maps.MapActivity");
      startActivity(new Intent(this, NooYawk.class));
    }
    catch (Exception e) {
      Toast
            .makeText(this,
                       "Google Maps are not available -- sorry!",
                       Toast.LENGTH_LONG)
            .show();
    }

    finish();
  }

如果我们检查是否MapActivity存在的测试成功,我们可以安全地启动一个MapActivity(这里命名为NooYawk)。如果我们遇到异常,我们只需使用Toast.

于 2013-06-14T12:55:51.037 回答