2005
6
7
8
9
10
11
12
2006
1
2
3
4
5
6
7
8
9
10
11
12
2007
1
2
3
4
5
6
7
8
9
10
11
12
2008
1
2
3
4
5
6
7
8
9
10
11
12
2009
1
2
3
4
5
6
7
8
9
10
11
12
2010
1
2
3
4
5
6
7
8
9
10
11
12
2011
1
2
3
4
5
6
7
8
9
10
11
12
2012
1
2
3
4
5
6
7
8
9
10
11
12
2013
1
2
3
4
5
6
7
8
9
10
11
12
2014
1
2
3
4
5
6
7
8
9
10
11
12
2015
1
2
3
4
5
6
7
8
9
10
11
12
2016
1
2
3
4
5
6
7
8
9
10
11
12
2017
1
2
3
4
5
6
7
8
9
10
11
12
2018
1
2
3
4
5
6
7
8
9
10
11
12
2019
1
2
3
4
5
6
7
8
9
10
11
12
2020
1
2
3
4
5
6
7
8
9
10
11
12
2021
1
Androidでアプリ間の連携をするにはIntentを使います。 1つのアプリの中で複数のアクティビティを連携させる ときにもIntentを使います。そうした場合は、 アクティビティのクラスを直接指定してやればいいです。 けれども、アプリ間で連携する場合にはクラスを直接 指定することはできません。クラスを指定するには クラスファイルをロードできなければなりませんが、 アプリ間では相手のクラスファイルをロードすることが できません(やり方はあるのかもしれませんが自分は 知りません)。 呼び出されたら今日の日付を返すアプリを考えます。 https://github.com/tkojitu/WagtailDate IntentとしてSimpleDateFormatのパターンを受け取ります。 また、結果はIntentで呼び出しもとのアクティビティに 返されると同時に、クリップボードにも送られます。 この日付アプリは、コードよりもAndroidManifest.xml のほうがポイントです: <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="org.jitu.wagtail.date.WagtailDate" 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="wagtail.intent.action.DATE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="text/plain" /> </intent-filter> </activity> </application> intent-filterを追加して、独自の名前とmimeタイプを 追加しています。 この日付アプリを呼び出す側は、次のようなコードに なっています: private void onClickDate() { Intent intent = new Intent("wagtail.intent.action.DATE"); intent.setType("text/plain"); intent.putExtra("pattern", "yyyyMMdd"); PackageManager packageManager = getPackageManager(); List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0); boolean isIntentSafe = (activities.size() > 0); if (isIntentSafe) { startActivity(intent); } } https://github.com/tkojitu/WagtailET/blob/master/src/org/jitu/wagtail/et/WagtailET.java 日付アプリで定義されている名前とmimeタイプ、そして 日付のパターンをIntentにセットして、startActivity で日付アプリを呼び出します。 日付アプリから返される結果はクリップボードに入って いるのを使うので、onActivityResultでは受けません。
Androidのアプリは、1つのアプリごとに独自のパッケージに 入れないといけない。 たとえば、WagtailETとWagtailDateという2つのアプリが あるとする。この2つのアプリをorg.jitu.wagtailという 1つのパッケージに収めることはできない。後から入れるものが 前に入っているアプリを消してしまう。 なので、面倒でも、org.jitu.wagtail.etと org.jitu.wagtail.dateといった2つのパッケージに分ける 必要がある。
もうかなり日にちが経ってしまったのですが、 ぐんまRuby会議01に参加しました。 自分はtoRubyに参加していますが、ぐんまRuby会議の 主催者であるguRubyの人もtoRubyに参加しているという 縁があります。 会議の様子はいずれどこかで詳しく紹介されるでしょうから 自分はちょっと違った話を。 例によって懇親会があったのですが、そこでyugui先輩に お話を伺える機会がありました。 ちなみに、yugui先輩とお呼びするのは: https://twitter.com/yotii23/status/310240589922836480 そして: http://dic.nicovideo.jp/a/%E3%82%AD%E3%83%A5%E3%82%A2%E3%83%A0%E3%83%BC%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%88 キャームンライトセンパイカッコイイー! という流れ。 さて、懇親会でまずお尋ねしたのは「基調講演の話の感じ からすると静的型言語のほうがしっくりしませんか?」と いうこと。 それに対して先輩は「(基調講演でも話のあった)多産多死 のために実装する早さを優先しているのでRubyを使って います」とのことでした。 もう一つお尋ねしたのは、実装する早さとからんでくる のですが、「yuguiさんのprimary abstractionは 何ですか?」ということ。 primary abstractionというのは: http://stepped.dodgson.org/?date=20111015 のことで、Shiroさんもomoさんの記事に触発されて記事を 書かれてました: http://blog.practical-scheme.net/shiro/20111018a-primary-abstraction 当然、yugui先輩もこの記事のことはご存知で、質問の返事 は「RubyやSmalltalkっぽいオブジェクトですね」とのこと。 短いけどこれでおしまい。yugui先輩、断りなくお話を 公開したことをお許しください。
むぅ。
Copyright © 1905 tko at jitu.org