投稿

2015の投稿を表示しています

[Qiita] FragmentのonAttach(Context context)が呼ばれない

※この記事は以前Qiitaに投稿されていた古い記事ですはじめにFragmentのonAttach(Context context)メソッドを使うときに、少しハマったのでメモ。onAttach(Activity activity)とonAttach(Context context)API Level 23より前では、onAttach(Activity activity)を使っていたのですが、このメソッドはAPI Level 23で非推奨になりました。
これの代わりにonAttach(Context context)というメソッドが登場したので、API Level 23以上ではこれを使うことになります。Support LibraryのFragmentの場合android.support.v4.app.Fragmentを継承しているFragmentの場合、onAttach(Context context)が実装されているので、以下のようにOverrideしても問題無く呼ばれます。@OverridepublicvoidonAttach(Context context){super.onAttach(context);}普通のFragmentの場合Support LibraryのFragmentで普通に使えていたので、同じようにandroid.preference.PreferenceFragmentでonAttach(Context context)をOverrideしたら、Android 6.0未満の端末では残念ながら呼ばれませんでした。
onAttach(Context context)はAPI Level 23で新しく実装されたメソッドなので当然ですね。
PreferenceFragmentがSupport LibraryのFragmentを継承しているものではないことを忘れていたので、少し悩んでしまいました。結論、普通のFragmentの場合は
Android 6.0以上だと、どっちも呼ばれますが、onAttach(Context context)onAttach(Activity activity)Android 6.0未満だと以前のonAttachしか呼ばれませんでした。onAttach(Activity activity)なので、こんな感じで実装しておきまし…

[Qiita] AndroidのGoogle Analytics SDKをv2からv4に移行する

※この記事は以前Qiitaに投稿されていた古い記事ですはじめに今自分が触っているアプリのAndroidのGoogle Analytics SDKをv2からv4に上げることにしたのですが、v2とv4ではパッケージ名も使い方も違っていて少し調べる必要があったので、移行したときに何を変更したのかメモとして書いておきます。
まぁ、v2はかなり古いSDKなので、未だにこれを使っている人はあんまりいないとは思いますが。。古いjarを消し去る今まで使っていたGoogle Analytics SDK v2のjarは不要なので、最初に消し去ります。アプリのbuild.gradleにGoogle Play Servicesを追記Google Analytics SDKはGoogle Play Servicesの中に入っているので、build.gradleにGoogle Play Servicesを追記します。
Google Play Servicesのバージョンは、なるべく最新のものを使ったほうが良いと思います。compile 'com.google.android.gms:play-services:8.3.0' importするコードを書けばAndroid Studioが自動でimportしてくれるとは思いますが、一応書いておきます。
v2とv4でパッケージ名が変わってました。import com.google.analytics.tracking.android.GoogleAnalytics;import com.google.analytics.tracking.android.Tracker;import com.google.android.gms.analytics.GoogleAnalytics;import com.google.android.gms.analytics.HitBuilders;import com.google.android.gms.analytics.Tracker;インスタンスの取得インスタンスの取得はgetTrackerをnewTrackerに変えるだけです。Tracker mTracker = GoogleAnalytics.getInstance(context).getTracker(TRACKER_ID);Tra…

[Qiita] AppCompatのAlertDialogのテーマカラーを変える

イメージ
※この記事は以前Qiitaに投稿されていた古い記事ですはじめにAndroid Supoprt Library 22.1で公開されたandroid.support.v7.app.AlertDialogを使うと、Material Designなダイアログを簡単に実装することができますが、そのダイアログのタイトルの文字色やダイアログの背景色を変えるにはどうすれば良いのか、メモとして書いておきます。style.xmlでカラーを定義<stylename="MyAlertDialogStyle"parent="Theme.AppCompat.Light.Dialog.Alert"> <item name="colorAccent">@android:color/holo_blue_dark</item> <item name="android:background">@android:color/white</item> <item name="android:textColorPrimary">@android:color/holo_blue_light</item> </style>nameどこの色colorAccentボタンの文字色とかandroid:backgroundダイアログの背景色android:textColorPrimaryタイトル、メッセージの文字色AlertDialog.BuilderでStyleをセットするAlertDialog.Builder builder =newAlertDialog.Builder(this, R.style.MyAlertDialogStyle); builder.setTitle("確認"); builder.setMessage("ほんとにいいの?"); builder.setPositiveButton("はい",newDialogInterface.OnClickListener(){@OverridepublicvoidonClick(Di…

【Androidアプリ開発】AndroidでのOAuth認証が簡単に実装できるOAuthHelperを作ってみた

イメージ
もうほぼタイトル通りなのですが、AndroidでのOAuth認証と、OAuth認証で取得したAuthTokenの使い方を理解するのにとても苦労したので、OAuth認証が簡単に実装できるOAuthHelperというクラスを作ってみました。ソースコードは以下のGitHubに公開しています。
syarihu/OAuthHelperSample
https://github.com/syarihu/OAuthHelperSample
OAuthHelperとは このOAuthHelperは、自分が使いたいGoogle APIのScopeをインスタンス生成時の引数に渡して認証処理を開始するメソッドを実行することで、後は自動でアカウントの選択、認証許可確認、AuthTokenの取得までを行います。なので、これを使えばAuthTokenが返ってきた後のGoogle APIの処理を書くだけで良くなるので、認証部分を書く手間が省けます。
使い方 これを使うためには、少しだけ準備をする必要があります。 以下にその準備から実装までの手順を記載します。 Google API Consoleで今回利用したいGoogle APIを有効にする
当たり前の話なのですが、Google APIを利用するためにはそのAPIを有効にする必要があります。なので、以下のURLからプロジェクトを作成し、利用したいAPIを有効にします。
https://console.developers.google.com/Google API ConsoleでOAuthのクライアントIDを作成する
AndroidアプリでのOAuth認証では、クライアントキーなどは必要ありませんが、あらかじめGoogle APIを利用するアプリのパッケージ名と署名証明書フィンガープリントを登録しておく必要があります。
これらの登録は、Google API Consoleでプロジェクトを選択し、左側にある「APIと認証」の「認証情報」をクリックし、「新しいクライアントIDを作成」ボタンを押すことで、登録することができます。
クライアントIDの作成画面はこんな感じです。


AndroidManifestに必要なパーミッションを追加する
ようやく実際のソースコードの話になります。OAuth認証を利用するには、以下の2つのパーミッションが必要になります。
<u…