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