19
Re:Kayo-System Co.,Ltd. Twitter @yokmama Now Loading. Please Wait ... Androidの外部アプリの連携 夜子まま塾 講義11(アプリ連携 暗黙Intentによる呼び出し) Friday, March 9, 2012

夜子まま塾講義11(暗黙的intent)

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

Twitter @yokmamaNow Loading. Please Wait ...

Androidの外部アプリの連携夜子まま塾 講義11(アプリ連携 暗黙Intentによる呼び出し)

Friday, March 9, 2012

Page 2: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

自己紹介氏名   :寺園聖文(てらぞの まさふみ)

肩書   :株式会社Re:Kayo-System 代表取締役社長

活動拠点 :神戸近郊~日本→海外行きたい

著書   :「10日でおぼえるAndroidアプリ開発入門教室」著(翔泳社)

      「HTML5によるAndroidアプリ開発入門」監修(日経BP)

アプリ  :「JUST PLAYER」「Skip Memo」「ふりがなオートマチック」等

好きなもの:アニメ、決して萌えじゃない、見てるけど、あくまで研究の一環

嫌いなもの:とくになし

最近のテーマ:電子工作、運動すること、英語

Friday, March 9, 2012

Page 3: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

暗黙的Intent講義10にて、Intentを使ったアプリを解説しました。Intentを使えば、他の画面を呼び出すことができます。ということは、Android端末内の他のアプリもIntentを

使えば呼び出せるわけです。だけどちょっとここで疑問がでてくるはずです。

Friday, March 9, 2012

Page 5: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

クラスが生成できない

しかし、Classは同一アプリ内のクラスであれば取得できるけど、そうでない場合は取得できません。では、他のアプリを画面を呼び出すにはどうすれ

ばいいの?

Friday, March 9, 2012

Page 6: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

一応こんなメソッドがある

Intent intent = new Intent();intent.setClassName( “ykmjuku.sample.android.app”, “ykmjuku.sample.android.app.Ykmjuku002Activity”);

Intent setClassName(String packageName, String className)

直接、文字列で呼び出し画面のクラス名とパッケージを設定する

AndroidManifest.xmlに書いてあるパッケージである点に注意

Friday, March 9, 2012

Page 7: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

クラスパスが分からない場合は?

残念ながら、クラスパスがわからないクラスは直接指定ができないため呼び出すこと

ができないです。では、分からない場合に他に方法ないの?

Friday, March 9, 2012

Page 8: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

あります!

その方法が、今回紹介する暗黙的Intentという呼び方です。

Friday, March 9, 2012

Page 9: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

暗黙的Intent暗黙的Intentとは、呼び出す相手を明確に設定しないで、ActionとTypeといった属性を元に該当するアプリを呼

び出す方法です。

Friday, March 9, 2012

Page 10: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

暗黙的Intentを図で

Intent呼び出し元

他の画面1

他の画面2

他の画面3

Action=A

Action A

ActionA

ActionB

Friday, March 9, 2012

Page 11: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

暗黙的Intentをコードで

Intent intent = new Intent(Intent.ACTION_PICK);intent.setType("image/*");startActivity(intent);

呼び出し

Intent.javaより抜粋public static final String ACTION_PICK = "android.intent.action.PICK";

<activity android:name="com.android.camera.ImageGallery" android:label="@string/gallery_label" android:icon="@drawable/ic_launcher_gallery"> <intent-filter> <action android:name="android.intent.action.PICK" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" /> <data android:mimeType="video/*" /> </intent-filter> </activity>

GalleryアプリのAndroidManifest.xml

Friday, March 9, 2012

Page 12: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

動かしてみるクリック

ACTION_PICKは何かを選択するアクションです。ActivityForResultを使うと選択した画像を取得するこ

とができます。

http://bit.ly/x5P8xYプログラム:ykmjuku009

Friday, March 9, 2012

Page 13: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

IntentFilterについてIntentにはパッケージやクラスの他に

ActionやTypeを設定することができます。そして、このAcitonやTypeにアプリが反応するかどうかを設定する方法がIntent-Filter

です。

Friday, March 9, 2012

Page 14: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

Intent-Filterの設定ActivityのIntent-Filterは

AndroidManifest.xmlで設定します。

タグ名:intent-filter

action子の要素

categorydata

Intentのアクション名(必須)Intentのカテゴリ名Intentのデータ使用

Friday, March 9, 2012

Page 15: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

Intent-Filterの設定AndroidManifest.xmlより<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".Ykmjuku009Activity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity></application>

この設定は、ランチャーアプリから起動できるアプリを設定するフィルターです。

Friday, March 9, 2012

Page 16: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

Intent-Filterは複数書いてもよい

<activity android:name=".Hoge" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter></activity>

ランチャー起動用のフィルターと表示用のフィルターの2つを定義している。

Friday, March 9, 2012

Page 17: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

色々なIntentの使用例メールの送信Intent intent=new Intent(Intent.ACTION_SEND);intent.putExtra(Intent.EXTRA_SUBJECT,"件名");intent.putExtra(Intent.EXTRA_TEXT,"本文");startActivity(intent);

Uri uri=Uri.parse("tel:0120-2222");Intent intent=new Intent(Intent.ACTION_CALL,uri);startActivity(intent);

電話の発信

Intent intent=new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.youtube.com/watch?v=Ndoi4XYqDgw"));startActivity(intent);

YouTube再生

Friday, March 9, 2012

Page 18: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

作ってみようテキスト連携を行い、入力した

文字列を渡すアプリ

Intent intent = new Intent(Intent.ACTION_SEND);intent.setType("text/plain");intent.putExtra(Intent.EXTRA_TEXT, “文字列”);

テキスト連携

参考例:ykmjuku010http://bit.ly/zB6C3P

Friday, March 9, 2012

Page 19: 夜子まま塾講義11(暗黙的intent)

Re:Kayo-System Co.,Ltd.

画面のないアプリは?続きは夜子まま塾オンライン(無料)にて毎週水曜日夜10:30~11:00(都合によりない場合もあります)

http://bit.ly/wTjjixGoogleID:101190223376062765723

夜子まま塾

上記アカウントをサークルに追加していると、ハングアウトのお誘いが届きます。

是非ご参加ください。

Friday, March 9, 2012