「Xamarin.Androidでインテントを受け取る」の版間の差分
ナビゲーションに移動
検索に移動
imported>Administrator (ページの作成:「 Xamarin.Androidでインテントを受け取るにはActivityにIntentFilter属性を付ける。 JavaのようにAndroidManifest.xmlを編集してintent-filterを書...」) |
(→関連項目) |
||
(他の1人の利用者による、間の1版が非表示) | |||
1行目: | 1行目: | ||
− | Xamarin. | + | Xamarin.Androidでインテントを受け取るには「'''ActivityにIntentFilter属性を付ける'''」。 |
JavaのようにAndroidManifest.xmlを編集してintent-filterを書くのはダメ。AndroidManifest.xmlを直接編集するとリフレクションに失敗して以下のような例外が発生する。これに気が付かずAndroidManifest.xmlの記述を間違えたかと思ってクソはまった。 | JavaのようにAndroidManifest.xmlを編集してintent-filterを書くのはダメ。AndroidManifest.xmlを直接編集するとリフレクションに失敗して以下のような例外が発生する。これに気が付かずAndroidManifest.xmlの記述を間違えたかと思ってクソはまった。 | ||
FATAL EXCEPTION: main | FATAL EXCEPTION: main | ||
60行目: | 60行目: | ||
== 関連項目 == | == 関連項目 == | ||
+ | * [[Xamarin.AndroidのIntentで外部アプリを起動する]] | ||
+ | * [[Xamarin.Androidでアプリを完全に終了させる]] | ||
* [[Xamarin.AndroidでUUIDを生成取得する]] | * [[Xamarin.AndroidでUUIDを生成取得する]] | ||
[[category: Xamarin.Android]] | [[category: Xamarin.Android]] |
2018年9月28日 (金) 02:25時点における最新版
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と同じ。迷わずググれ。
[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;
}
// 以下略
}