skimemo


skimemo - 日記/2013-08-18/Google Play Service Availableチェックではまる

_ Google Play Service Availableチェックではまる

Google Playを利用したアプリの作成時は、端末を初期化した状態でのテストも欠かせません。Google Playが初めての利用だったり、そもそもGoogle Playが入っていない(Android 2.2でもandroidマーケットを更新しないとplayにならないものがある、私の使ってるGalaxy S SC-02Bとか・・)場合があるからです。

そんな確認をしていて、isGooglePlayServicesAvailable()の実装の必要性に気づき、色々お世話になっている以下のページを参考に実装しました。
http://dev.classmethod.jp/smartphone/android/android-google-play-services-2/

当初、例を参考に、

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
-
!
-
|
|
|
!
// ErrorDialog の表示
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(resultCode, this, REQUEST);
if (dialog != null) {
    ErrorDialogFragment frag = new ErrorDialogFragment();
    frag.setDialog(dialog);
    frag.show(getSupportFragmentManager(), "error_dialog_fragment");
}

という感じで実装し、Dialog用のActivityを作ったり、それだと真っ黒な画面が出てしまうのでDialogがDismissされたらCallbackでActivityもfinish()したりと、いろいろやったのですが、ダイアログ表示中に画面を回転させるとNullPointerExceptionが発生してしまう現象がどうしても解決できませんでした。

どうやら原因は、以下のサイトにあるように、回転時にDialogFragmentが再生される際、Activityからの生成ではなく直接onCreateDialogが呼ばれてしまい、返り値を作れなくて落ちるという現象でした。
http://y-anz-m.blogspot.jp/2012/04/androidfragment-setarguments.html

そこで、このあたりを参考にしながら、Serializeで値を保存する方策を探ってみたのですが、Dialog型のSerializeが分からずに断念(そもそも無理?)。

違う方面からのアプローチを探していたら、こちらのサイトで良い方法を見つけました。
それはなんと、以下のように、

Everything is expanded.Everything is shortened.
  1
  2
 
 
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(resultCode, this, REQUEST);
dialog.show();

getErrorDialog()した後、DialogFragmentを使わずにそのままdialog.show();してしまうというもの。
なんだ、これでいいんだ・・・脱力。


勧められてみた。

Category: [android] - 16:45:19

}}


 
Last-modified: 2013-08-18 (日) 18:47:55 (2715d)