Xamarinでクリップボードの監視をする場合、
Java.Lang.Objectを継承し、ClipboardManager.IOnPrimaryClipChangedListenerを実装します。
アプリケーション単位で監視したい場合は、App.xaml.csのOnStart()で変更イベントをハンドルさせます。
using Android.Content;
using Xamarin.Forms;
namespace App1
{
public partial class App : Application
{
public App ()
{
InitializeComponent();
MainPage = new App1.MainPage();
}
static bool bHasClipChangedListener = false;
ClipboardManager ClipBoardManager = (ClipboardManager)Forms.Context.GetSystemService(Context.ClipboardService);
private void RegPrimaryClipChanged()
{
if (!bHasClipChangedListener)
{
ClipBoardManager.AddPrimaryClipChangedListener(new OnPrimaryClipChangedListener());
bHasClipChangedListener = true;
}
}
protected override void OnStart ()
{
//開始時にハンドルする
RegPrimaryClipChanged();
}
}
public class OnPrimaryClipChangedListener : Java.Lang.Object, ClipboardManager.IOnPrimaryClipChangedListener
{
public void OnPrimaryClipChanged()
{
//クリップボードが変更された場合の処理
}
}
}
あとAndroid、iOSで共通の処理を作りたい場合は、DependencyServiceを使用して呼び出せば共通の動作を作成できます。
おしまい。