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

1,662 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,662
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

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

×