Android で新しい Google Maps V2 API を使用する場合、ユーザーのデバイスに Google Play (サービス) アプリがインストールされていないと、エラー メッセージが表示されます。このエラー メッセージのスタイルを何らかの方法でオーバーライドして、不快感を軽減し、アプリのスタイルをより適切に合わせることができるかどうか疑問に思っています。
エラーは次のようになります。
Android で新しい Google Maps V2 API を使用する場合、ユーザーのデバイスに Google Play (サービス) アプリがインストールされていないと、エラー メッセージが表示されます。このエラー メッセージのスタイルを何らかの方法でオーバーライドして、不快感を軽減し、アプリのスタイルをより適切に合わせることができるかどうか疑問に思っています。
エラーは次のようになります。
調査を行った結果、Google Playサービスライブラリの存在を手動で確認し、カスタムエラーダイアログまたはエラーレイアウトを表示することが最善の解決策であると判断しました。GooglePlayServicesUtil
これをかなり簡単にするいくつかのユーティリティメソッドがあります。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int statusCode =
GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (statusCode == ConnectionResult.SUCCESS) {
// Continue with your regular activity/fragment configuration.
} else {
// Hide the map fragment so the default error message is not
// visible.
findViewById(R.id.map).setVisibility(View.GONE);
// Show a custom error message
showErrorMessage(statusCode);
}
}
private void showErrorMessage(final int statusCode) {
// I've outlined two solutions below. Pick which one works best for
// you and remove the if-block.
boolean showDialog = false;
if (showDialog) {
// This is the easiest method and simply displays a pre-configured
// error dialog
GooglePlayServicesUtil.getErrorDialog(statusCode, this, 0).show();
} else {
// Show a completely custom layout
findViewById(R.id.error).setVisibility(View.VISIBLE);
// Wire up the button to install the missing library
Button errorButton = (Button) findViewById(R.id.error_button);
errorButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
// Perform the correct action for the given status
// code!
GooglePlayServicesUtil.getErrorPendingIntent(
statusCode, getActivity(), 0).send();
} catch (CanceledException e1) {
// Pass
}
}
});
}
}