2013 年 11 月 20 日

モバイルブラウザからアプリを呼び出す方法

3140-logo

アプリに連動したウェブサイトから、アプリを呼び出したいと思ったことはありませんか。アクティビティのインテントフィルタをURIスキームで定義すると、他のアプリとの連携がURIで利用できるようになります。もちろん、引き渡せる情報はURIパラメータなので、インテントによる起動ほど柔軟ではありません。

最近、ディープリンクが注目されだして、ブラウザからアプリの詳細ページへ直接リンクをつくること(ディープリンク)で、ユーザビリティを向上させることが求められています。Androidブラウザのグーグルの検索結果から直接アプリの詳細ページへジャンプできるようにするという方法があります(Google 検索用 App Indexing)。

続きを読む »

2013 年 11 月 9 日

Percelでアプリの状態を保存・復元

9999-logo

アンドロイドのアクティビティは、バックグラウンドにまわされると、OSからいつ終了(onDestoryを呼出)させられてもおかしくない状態になります。

たとえば、アプリから異なるアプリのアクティビティをインテントで呼び出した後、このアクティビティからの応答を待っているときに、一旦終了させられて、応答が返ったとき再生成されonCreateが呼出させることがあります。

このとき、アプリのアクティビティの状態(たとえば、選択されたタブとか、リストのチェックなど)を復元してやる必要があります。アクティビティが新たに起動しonCreateが呼出されるので、こういった情報は残りません。

これはアンドロイドのアクティビティのライフサイクルの特徴で、アプリケーションプログラマは、これを想定してアプリを開発する必要があります。

続きを読む »

2013 年 11 月 8 日

ウィジェットのセル数が異なってしまうとき

3087-logo

今のところ、iphoneにはなくてandroidに存在する機能の一つであるウィジェットは便利なものです。ホーム画面が散らかるとはいえ、利用次第で操作性が向上します。

ウィジェットを配置するとき、1×1,4×1などの表記がありますが、ウィジェットの幅や高さはセル単位で示されています。開発時はセル数ではなく、決められた計算式でdipという単位で指定します。

しかし、API Level14からこの計算式が大きく変更されたことで、想定したウィジェットセル数が正しく認識されないという問題があるようです。アプリが動作するOSのバージョンにより、セル数が変わってしまい、ウィジェットが配置できない場合もあります。こんなときの対処方法をまとめておきたいと思います。

続きを読む »

2013 年 11 月 8 日

アンドロイドのSDカードパスの取得方法

3074-logo

今回は、アンドロイドのSDカードパスの取得方法をご紹介します。一般的には、Environment.getExternalStorageDirectory()を利用すれば取得できるだろうと考えがちですが、実はSDカードのパスとは限りません。Externalという言葉が外部とかSDカードを連想しがちですが、どちらかというと拡張と考えると理解しやすいです。

KitKatの詳細が公開されましたが、SDカードに関する扱いはまた異なってくるかもしれません。KitKatが早急に広まることで、Gingerbread対応(2.3)をしなくてよくなれば、本当に助かるのですが、各ベンダーごとの実装が存在するので、そう簡単にはいかないでしょう。

続きを読む »