Xamarin.Android で Intent を受けとるには?

例えば、他のアプリからテキストを「送る」して、自作の Xamarin アプリでそれを受け取りたい時。

普通の Android アプリ開発だと AndroidManifest.xml にこう書く。

//AndroidManifest.xml
<activity
  android:name="com.example.intenttest.MainActivity"
  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.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="text/plain" />
  </intent-filter>
</activity>

Xamarin.Android では、Activity のソースファイルの属性として、以下のように書く。

//MainActivity.cs
[Activity(Label = "MainActivity", MainLauncher = true)]
[IntentFilter (new []{ Intent.ActionSend }, 
  Categories = new []{ Intent.CategoryDefault },
  DataMimeType = "text/plain" )]
public class MainActivity : Activity
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

テキストでない場合は、mimetype を適宜変更する。省略したら動作しなかった。