Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

1,710 views

Published on

Published in: Technology
  • Be the first to comment

夜子まま塾講義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

×