如何在mono android c#中粘贴剪贴板到编辑文本

本文关键字:剪贴板 编辑 文本 mono android | 更新日期: 2023-09-27 17:51:19

我想将android剪贴板文本粘贴到我的编辑文本中。

var button = MainActivity.This.FindViewById<Button> (Resource.AddLinks.btn_Paste);
EditText txt_Address = MainActivity.This.FindViewById<EditText> (Resource.AddLinks.txt_Address);
button.Click += (sender,e) =>
{
    txt_Address.Text=//How to Paste Android Clipbord?
};

如何在mono android c#中粘贴剪贴板到编辑文本

这就像你想用Xamarin.Android做的任何事情一样。你首先需要弄清楚如何在原生Android/Java上做到这一点。然后将其转换为c#。

这是一个Android解决方案的链接Android从剪贴板管理器复制/粘贴

下面是c#中的例子:

//for copy
var clipboard = (ClipboardManager)GetSystemService(ClipboardService);
var clip = ClipData.NewPlainText("your_text_to_be_copied");
clipboard.PrimaryClip = clip;

// And paste it
var clipboard = (ClipboardManager)GetSystemService(ClipboardService);
var pasteData = "";
if (!(clipboard.HasPrimaryClip)) 
{
    // If it does contain data, decide if you can handle the data.
} 
else if (!(clipboard.PrimaryClipDescription.HasMimeType(ClipDescription.MimetypeTextPlain)))
{
    // since the clipboard has data but it is not plain text
} 
else 
{
    //since the clipboard contains plain text.
    var item = clipboard.PrimaryClip.GetItemAt(0);
    // Gets the clipboard as text.
    pasteData = item.Text;
}

将Java翻译成c#的基本经验法则。

  • setter和getter通常被翻译成属性
    • String text = item.getText(); => var text = item.Text;
    • item.setText(text); => item.Text = text;
  • ANDROID_CONSTANTS通常被转换为枚举或类常量字段
    • Context.CLIPBOARD_SERVICE => Context.ClipboardService
    • MIMETYPE_TEXT_PLAIN => ClipDescription.MimetypeTextPlain