Google マップ Android API V2 を使用する場合、Google Play サービスのセットアップ ドキュメントに従って、メインのアクティビティで次のコードを使用して、Google Play サービスがインストールされていることを確認します。
@Override
public void onResume()
{
checkGooglePlayServicesAvailability();
super.onResume();
}
public void checkGooglePlayServicesAvailability()
{
int resultCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if(resultCode != ConnectionResult.SUCCESS)
{
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(resultCode, this, 69);
dialog.setCancelable(false);
dialog.setOnDismissListener(getOnDismissListener());
dialog.show();
}
Log.d("GooglePlayServicesUtil Check", "Result is: " + resultCode);
}
これはうまくいきます。しかし、私が使用している古い Android スマートフォン (ほとんどが 2.2 を実行) の一部には、Google PlayServices と Google マップ アプリ自体の両方が欠けていることに気付きました。
LogCat は次のエラーを報告します: Google マップ Android API: Google マップ アプリケーションが見つかりません。
質問- デバイスで Google マップを使用できるかどうかについて、上記と同様のチェックを行うにはどうすればよいですか? 次に、ユーザーが既に Google マップをインストールしている場合、インストールされているバージョンが Android Maps API の V2 と互換性があることを確認する必要があると思います。
更新 onCreate() の最後に呼び出される setupMapIfNeeded() メソッドは次のとおりです。ここで、Google マップがインストールされているかどうかを判断し、ユーザーに警告したいと思います。else ブロックを参照してください。
private void setUpMapIfNeeded()
{
// Do a null check to confirm that we have not already instantiated the map.
if (mMap == null)
{
// Try to obtain the map from the SupportMapFragment.
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.basicMap)).getMap();
if (mMap != null)
{
mMap.setLocationSource(this);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(44.9800, -93.2636), 10.0f));
setUpMap();
}
else
{
//THIS CODE NEVER EXECUTES - mMap is non-null even when Google Maps are not installed
MapConstants.showOkDialogWithText(this, R.string.installGoogleMaps);
}
}
}