差分

ナビゲーションに移動 検索に移動

Xamarin.Androidでインテントを受け取る

2,290 バイト追加, 2018年2月7日 (水) 05:11
ページの作成:「 Xamarin.Androidでインテントを受け取るにはActivityにIntentFilter属性を付ける。 JavaのようにAndroidManifest.xmlを編集してintent-filterを書...」

Xamarin.Androidでインテントを受け取るにはActivityにIntentFilter属性を付ける。
JavaのようにAndroidManifest.xmlを編集してintent-filterを書くのはダメ。AndroidManifest.xmlを直接編集するとリフレクションに失敗して以下のような例外が発生する。これに気が付かずAndroidManifest.xmlの記述を間違えたかと思ってクソはまった。
FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.test/com.example.test.MainActivity}:
java.lang.ClassNotFoundException: Didn't find class "アクティビティ名"

OnNewIntentやOnResumeなどのその他の部分はJavaと同じ。迷わず[[ググれ]]。

<source>
[Activity(
Label = "MainActivity",
MainLauncher = true,
Icon = "@drawable/icon",
Theme = "@style/Theme.Splash",
AlwaysRetainTaskState = true,
LaunchMode = LaunchMode.SingleInstance,
ScreenOrientation = ScreenOrientation.Portrait,
ConfigurationChanges = ConfigChanges.Orientation |
ConfigChanges.KeyboardHidden |
ConfigChanges.Keyboard |
ConfigChanges.ScreenSize |
ConfigChanges.ScreenLayout)]
[IntentFilter(
new [] { Intent.ActionView },
Categories = new [] {
Intent.CategoryDefault,
Intent.CategoryBrowsable,
},
DataScheme = "myapp",
DataHost = "callback",
DataPath = ""
)]
public class MainActivity : Activity
{
protected override void OnResume()
{
base.OnResume();

var intent = this.Intent;
var action = intent.Action;
if (action == Intent.ActionView)
{
var uri = intent.Data;
if (uri != null)
{
}
}
}

protected override void OnNewIntent(Intent intent)
{
base.OnNewIntent(intent);
this.Intent = intent;
}

// 以下略
}
</source>

== 関連項目 ==
* [[Xamarin.AndroidでUUIDを生成取得する]]

[[category: Xamarin.Android]]
匿名利用者

案内メニュー