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

ホーム

2013年05月30日

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では受けません。

本家Permlink


2013年05月29日

Androidのアプリは、1つのアプリごとに独自のパッケージに
入れないといけない。

たとえば、WagtailETとWagtailDateという2つのアプリが
あるとする。この2つのアプリをorg.jitu.wagtailという
1つのパッケージに収めることはできない。後から入れるものが
前に入っているアプリを消してしまう。

なので、面倒でも、org.jitu.wagtail.etと
org.jitu.wagtail.dateといった2つのパッケージに分ける
必要がある。

本家Permlink


2013年05月17日

もうかなり日にちが経ってしまったのですが、
ぐんま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先輩、断りなくお話を
公開したことをお許しください。


本家Permlink


2013年05月16日

むぅ。

本家Permlink


Copyright © 1905 tko at jitu.org

バカが征く on Rails