SSブログ

Androidプログラミングの基礎[3] 暗黙インテント [Android]

今回のテーマは「暗黙インテント」です。

第3回: 暗黙インテント

Androidの特徴の一つとしてアプリケーション間の連携がある。共有機能により他のアプリケーションを起動しデータを連携することが出来る。

暗黙インテントとはAndroidのアプリケーション間連携機能であり、相手のアプリケーション名を知らなくても、システムが最適な相手に渡してくれる。

1.暗黙インテントとインテントフィルター

例として、カメラアプリで写真を撮ったデータをメールソフトに送ったり、Facebookに連携して画像をアップロードしたりできる。

◎ インテントフィルター

Androidシステムは、AndroidManifest.xmlでアプリケーションにintent-filter要素で設定したインテントフィルターに基づいて、インテントの宛先を処理している。

インテントの調査は、インテントの保持するアクション、カテゴリー、データ3つの項目に対して行われる。

⇒ アクション

action要素でアクションを指定する。例えば「通話する」、「データを編集する」、「メッセージを配信する」などの内容を定義しておく。

⇒ カテゴリー

category要素でカテゴリーを指定する。カテゴリーはアクションに対する追加情報を表す。

⇒ データ

data要素でデータを指定します。取扱いに関する情報を、URIとMIMEタイプで指定する。例えば電話を掛けるURIは「tel:0123456789」、地図を示すURIは「geo:35.69,139.69」となる。

 

2.2つのアプリケーションの連携

インテントを送信するアプリケーションと受信するアプリケーションの2つを作成する。

◎ インテント受信アプリケーションの作成

プロジェクト設定

・新規Androidアプリケーション

アプリケーション名 AnimalView
プロジェクト名 AnimalView
パッケージ名 jp.andsys.android.animalview
最小必須 SDK API 8: Android 2.2 (Froyo)
ターゲット SDK API 18
次でコンパイル API 10: Android 2.3.3 (Gingerbread)
テーマ None

・プロジェクトの構成

ディフォルトのまま

・アイコンの属性

ディフォルトのまま

・アクティビティーの作成

Blank Activity

・Blank Activity

アクティビティ名 AnimalViewActivity
レイアウト名 main
ナビゲーション・タイプ None

・プロジェクトの生成

image

アプリで使用する画像ファイルを以下にコピーします。

image

⇒ アクティビティの作成

・レイアウトXML作成

”AnimalView/res/layout/giraffe.xml”

Eclipseのメニューから「ファイル」、「新規」、「その他」を実行し、「Android」、「Android XML ファイルを」選択し、以下の設定でレイアウトXMLを作成します。

設定項目 入力値/選択項目
リソース・タイプ Layout
プロジェクト AnimalView
ファイル giraffe
ルート要素 LinearLayout

作成された、giraffe.xml ファイルを編集します。

image

・Giraffeアクティビティの作成

”AnimalView/src/jp/andsys/android/animalview/Giraffe.java”

Eclipseのメニューから「ファイル」、「新規」、「クラス」を選択し、「新規Javaクラス」画面から以下の設定でクラスを作る。

設定項目 入力値/選択項目
パッケージ jp.andsys.android.animalview
名前 Giraffe
スーパークラス android.app.Activity
インターフェース なし

作成された、Giraffe.java ファイルを編集します。

image

同様に、ライオンとカバを作成します。

ライオン用ソース

lion.xml

image

Lion.java

image

カバ用ソース

hippo.xml

image

Hippo.java

image

⇒ マニフェストの修正

アクティビティをAndroidManifest.xmlに追加し、インテントフィルターの設定を行う。

AndroidManifest.xml の編集

”AnimalView/AndroidManifest.xml”

image

image

◎ インテント送信アプリケーションの作成

  インテント送信側のアプリケーションを作成します。

プロジェクト設定

・新規Androidアプリケーション

アプリケーション名 ImplicitIntent
プロジェクト名 ImplicitIntent
パッケージ名 jp.andsys.android.ImplicitIntent
最小必須 SDK API 8: Android 2.2 (Froyo)
ターゲット SDK API 18
次でコンパイル API 10: Android 2.3.3 (Gingerbread)
テーマ None

・プロジェクトの構成

ディフォルトのまま

・アイコンの属性

ディフォルトのまま

・アクティビティーの作成

Blank Activity

・Blank Activity

アクティビティ名 ImplicitIntentActivity
レイアウト名 main
ナビゲーション・タイプ None

・プロジェクトの生成

image

main.xml の編集

”ImplicitIntent/res/layout/main.xml”

image

ImplicitIntentActivity.java の編集

”ImplicitIntent/src/jp/andsys/android/implicitintent/ImplicitIntentActivity.java”

image

⇒ 実行時の注意

AnimalViewアプリケーションを一度実行しておきます。次にImplicitIntentアプリを起動します。

image

「キリン」ボタンを押します。

image

戻るボタンを押します。

image

「すべて」ボタンを押すとリスト画面が現れるので、「ライオン」をクリックします。

image

ライオン画面がでます。

image

 

3.標準アプリケーションを起動する

Android標準のアプリケーションを起動するアプリケーションを作成します。

プロジェクト設定

・新規Androidアプリケーション

アプリケーション名 ImplicitIntent2
プロジェクト名 ImplicitIntent2
パッケージ名 jp.andsys.android.ImplicitIntent2
最小必須 SDK API 8: Android 2.2 (Froyo)
ターゲット SDK API 18
次でコンパイル API 10: Android 2.3.3 (Gingerbread)
テーマ None

・プロジェクトの構成

ディフォルトのまま

・アイコンの属性

ディフォルトのまま

・アクティビティーの作成

Blank Activity

・Blank Activity

アクティビティ名 ImplicitIntent2Activity
レイアウト名 main
ナビゲーション・タイプ None

・プロジェクトの生成

image

main.xml の編集

”ImplicitIntent/res/layout/main.xml”

image

ImplicitIntent2Activity.java の編集

”ImplicitIntent2/src/jp/andsys/android/implicitintent2/ImplicitIntent2Activity.java”

image

AndroidManifest.xml の編集

”AnimalView/AndroidManifest.xml”

image

・実行

image

◎ Web検索

Webブラウザーを起動する場合は、ACTION_WEB_SEARCHアクションを使ってIntentオブジェクトを作成します。

// Web検索
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, "アンドロイド");

URLを渡して表示する場合は次のようにします。

Uri uri = Uri.parse(“http://developer.android.com/”);

Intent intent = new Intent(Intent.ACTION_VIEW, uri);

image

◎ 電話をかける

電話を掛ける場合は、ACTION_CALLアクションを使います。

// 電話をかける
Intent intent = new Intent(Intent.ACTION_CALL,
        Uri.parse("tel:01234567890"));

image

◎ マップを起動

マップアプリの起動は、ACTION_VIEWアクションを使います。

// 地図を起動
Intent intent = new Intent(Intent.ACTION_VIEW,
        Uri.parse("geo:35.689, 139.691?z=16"));

マップアプリが無いためクラッシュ!

◎ オーディオを取得

オーディオアプリの起動は、ACTION_GET_CONTENTアクションを使い、setTypeメソッドでデータのMIMEタイプを指定します。

// オーディオを取得
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("audio/*");

image

image

◎ イメージを取得

イメージの場合以下のようにします。

// イメージを取得
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");

image

 

4.他のアプリケーションを起動する

明示インテントにおけるインテントフィルターの扱いを説明するため、サンプルプログラム”IntentSample1”を起動するアプリケーションを作成する。

プロジェクト設定

・新規Androidアプリケーション

アプリケーション名 AppStart
プロジェクト名 AppStart
パッケージ名 jp.andsys.android.appstart
最小必須 SDK API 8: Android 2.2 (Froyo)
ターゲット SDK API 18
次でコンパイル API 10: Android 2.3.3 (Gingerbread)
テーマ None

・プロジェクトの構成

ディフォルトのまま

・アイコンの属性

ディフォルトのまま

・アクティビティーの作成

Blank Activity

・Blank Activity

アクティビティ名 AppStartActivity
レイアウト名 main
ナビゲーション・タイプ None

・プロジェクトの生成

image

main.xml の編集

”AppStart/res/layout/main.xml”

image

AppStartActivity.java の編集

”AppStart/src/jp/andsys/android/appstart/AppStartActivity.java”

image

・実行

image

「IntentSample1 ActivityA起動」ボタンを押す。するとアプリケーションが起動します。

image

「IntentSample1 ActivityB起動(エラー)」ボタンを押す。するとエアーでアプリケーションがクラッシュしました。

image

IntentSample1 のAndroidManifest.xmlのActivityB のactivity要素に、以下のIntent-filter要素を設定すれば起動する。

image

”IntentSample1”アプリケーション修正後、「IntentSample1 ActivityB起動(エラー)」ボタンを押す。すると画面Bが起動しました。

image

以上で「暗黙インテント」を終了します。

 

本記事は以下の参考書を元にしています。


nice!(0)  コメント(0)  トラックバック(1) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 1

WordPress Plugin [Su..WordPress Plugin [Ti.. ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。