0

一部のデバイスでは、マップ アクティビティを開始すると、アプリが NoClassDefFoundError でクラッシュします。

はい、権限とライブラリ、および MapActivity を実行するために必要なすべてのものがあります。すべてのデバイスの 99.9% で正常に動作します (すべて Google サービスを備えています...)。

ただし、聞いたことのないデバイスが 2 ~ 3 台あります (例: Prestigio - PAP4040_DUO または MID - PAD-FMD700P または rockchip AN9G2) には、Google サービスがなく、マップ アクティビティを開く可能性がないようです。

これを検出して、「お使いの携帯電話は Google マップをサポートしていません。申し訳ありません」などのメッセージを表示する可能性はありますか?

(はい、数千台のデバイスを無視できますが、すべてをサポートしようとします)

4

1 に答える 1

3

これを検出して、「お使いの携帯電話は Google マップをサポートしていません。申し訳ありません」などのメッセージを表示する可能性はありますか?

MapActivityおそらくランチャーアイコンに関連付けられていない場合。私の推測では、Maps V1 SDK アドオンから、または何か他のものからNoClassDefFoundError来ていると思います。MapActivityその場合、 を使用Class.forName()して、マップ V1 のクラスがあるかどうかを検出してから、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を安全に開始できます。例外が発生した場合は、単純に.MapActivityNooYawkToast

于 2013-06-14T12:55:51.037 に答える