<< 前 ホーム 次 >>

bakaid: 20130530

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

<< 前 ホーム 次 >>


Copyright © 1905 tko at jitu.org

バカが征く on Rails