More Related Content
Similar to 夜子まま塾講義11(暗黙的intent)
Similar to 夜子まま塾講義11(暗黙的intent) (20)
More from Masafumi Terazono
More from Masafumi Terazono (20)
夜子まま塾講義11(暗黙的intent)
- 1. Now Loading. Please Wait ...
Twitter @yokmama
Androidの外部アプリの連携
夜子まま塾 講義11(アプリ連携 暗黙Intentによる呼び出し)
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 2. 自己紹介
氏名 :寺園聖文(てらぞの まさふみ)
肩書 :株式会社Re:Kayo-System 代表取締役社長
活動拠点 :神戸近郊∼日本→海外行きたい
著書 :「10日でおぼえるAndroidアプリ開発入門教室」著(翔泳社)
「HTML5によるAndroidアプリ開発入門」監修(日経BP)
アプリ :「JUST PLAYER」「Skip Memo」「ふりがなオートマチック」等
好きなもの:アニメ、決して萌えじゃない、見てるけど、あくまで研究の一環
嫌いなもの:とくになし
最近のテーマ:電子工作、運動すること、英語
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 3. 暗黙的Intent
講義10にて、Intentを使ったアプリを解説しました。
Intentを使えば、他の画面を呼び出すことができます。
ということは、Android端末内の他のアプリもIntentを
使えば呼び出せるわけです。
だけどちょっとここで疑問がでてくるはずです。
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 4. Intentの生成
Intent(Context packageContext, Class<?> cls)
おさらいです、上のメソッドはIntentの
コンストラクタです。
Intentの生成には呼び出すクラスのクラ
ス名が必要でした。
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 5. クラスが生成できない
しかし、
Classは同一アプリ内のクラスであれば取得でき
るけど、そうでない場合は取得できません。
では、他のアプリを画面を呼び出すにはどうすれ
ばいいの?
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 6. 一応こんなメソッドがある
Intent setClassName(String packageName, String className)
直接、文字列で呼び出し画面のクラス名と
パッケージを設定する
例 AndroidManifest.xmlに書いてある
Intent intent = new Intent(); パッケージである点に注意
intent.setClassName(
ykmjuku.sample.android.app ,
ykmjuku.sample.android.app.Ykmjuku002Activity );
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 7. クラスパスが分からない
場合は?
残念ながら、クラスパスがわからないクラ
スは直接指定ができないため呼び出すこと
ができないです。
では、分からない場合に他に方法ないの?
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 8. あります!
その方法が、今回紹介する暗黙的
Intentという呼び方です。
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 9. 暗黙的Intent
暗黙的Intentとは、呼び出す相手を明
確に設定しないで、ActionとTypeと
いった属性を元に該当するアプリを呼
び出す方法です。
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 10. 暗黙的Intentを図で
他の画面1
Action A
呼び出し元 Intent
他の画面2
Action=A ActionA
他の画面3
ActionB
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 11. 暗黙的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";
GalleryアプリのAndroidManifest.xml
<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>
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 12. 動かしてみる
クリック
ACTION_PICKは何かを選択するア
クションです。ActivityForResult
を使うと選択した画像を取得するこ
とができます。
プログラム:ykmjuku009
http://bit.ly/x5P8xY
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 13. IntentFilterについて
Intentにはパッケージやクラスの他に
ActionやTypeを設定することができます。
そして、このAcitonやTypeにアプリが反応
するかどうかを設定する方法がIntent-Filter
です。
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 14. Intent-Filterの設定
ActivityのIntent-Filterは
AndroidManifest.xmlで設定します。
タグ名:intent-filter
子の要素
action Intentのアクション名(必須)
category Intentのカテゴリ名
data Intentのデータ使用
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 15. 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>
この設定は、ランチャーアプリから起動でき
るアプリを設定するフィルターです。
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 16. 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つを定義している。
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 17. 色々な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);
YouTube再生
Intent intent=new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.youtube.com/watch?v=Ndoi4XYqDgw"));
startActivity(intent);
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 18. 作ってみよう
テキスト連携を行い、入力した
文字列を渡すアプリ
テキスト連携
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, “文字列”);
参考例:ykmjuku010
http://bit.ly/zB6C3P
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012
- 19. 画面のないアプリは?
続きは夜子まま塾オンライン(無料)にて
毎週水曜日夜10:30∼11:00
(都合によりない場合もあります)
夜子まま塾
http://bit.ly/wTjjix
GoogleID:101190223376062765723
上記アカウントをサークルに追加していると、
ハングアウトのお誘いが届きます。
是非ご参加ください。
Re:Kayo-System Co.,Ltd.
Friday, March 9, 2012