我正在构建一个Android应用程序,我想复制EditText小部件的文本值。这是可能的用户按菜单+A然后菜单+C复制的值,但我如何通过编程做到这一点?
当前回答
我以kotlinish的方式使用这个(使用片段工作)
private fun copyTextToClipboard(copyText: String) {
val clipboardManager = requireActivity().
getSystemService(CLIPBOARD_SERVICE) as
android.content.ClipboardManager
val clipData = ClipData.newPlainText("userLabel" ,copyText.trim())
clipboardManager.setPrimaryClip(clipData)
}
其他回答
对于Kotlin,我们可以使用以下方法。您可以将此方法粘贴到活动或片段中。
fun copyToClipBoard(context: Context, message: String) {
val clipBoard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clipData = ClipData.newPlainText("label",message)
clipBoard.setPrimaryClip(clipData)
}
使用ClipboardManager#setPrimaryClip方法:
import android.content.ClipboardManager;
// ...
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", "Text to copy");
clipboard.setPrimaryClip(clip);
ClipboardManager API引用
这是我的工作代码
/**
* Method to code text in clip board
*
* @param context context
* @param text text what wan to copy in clipboard
* @param label label what want to copied
*/
public static void copyCodeInClipBoard(Context context, String text, String label) {
if (context != null) {
ClipboardManager clipboard = (ClipboardManager) context.getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText(label, text);
if (clipboard == null || clip == null)
return;
clipboard.setPrimaryClip(clip);
}
}
Android支持库更新
从Android Oreo开始,支持库只到API 14。大多数新应用程序的最小API也可能是14,因此不需要担心其他一些答案中提到的API 11的问题。很多代码都可以被清理。(但如果你仍然支持低版本,请查看我的编辑历史。)
Copy
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", selectedText);
if (clipboard == null || clip == null) return;
clipboard.setPrimaryClip(clip);
粘贴
我添加这个代码作为奖励,因为复制/粘贴通常是成对完成的。
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
try {
CharSequence text = clipboard.getPrimaryClip().getItemAt(0).getText();
} catch (Exception e) {
return;
}
笔记
请确保导入android.content.ClipboardManager版本,而不是旧的android.text.ClipboardManager。ClipData也一样。 如果你不在活动中,你可以通过context.getSystemService()获取服务。 我使用了一个try/catch块来获取粘贴文本,因为多个东西可以为空。如果您觉得这样可读性更好,可以逐个检查。
对于Kotlin,在活动中使用下面的代码。
import android.content.ClipboardManager
val clipBoard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clipData = ClipData.newPlainText("label","Message to be Copied")
clipBoard.setPrimaryClip(clipData)
推荐文章
- 在XML中“图像上缺少contentDescription属性”
- 在Android SQLite中处理日期的最佳方法
- 读取Android APK的包名
- Android-Facebook应用程序的键散列
- 登出时,清除活动历史堆栈,防止“返回”按钮打开已登录的活动
- 如何改变标题的活动在安卓?
- 如何隐藏动作栏之前的活动被创建,然后再显示它?
- 是否有一种方法以编程方式滚动滚动视图到特定的编辑文本?
- 在Android中将字符串转换为Uri
- 如何在NestedScrollView内使用RecyclerView ?
- 移动到另一个EditText时,软键盘下一步点击Android
- Android应用中的GridView VS GridLayout
- Activity和FragmentActivity的区别
- 右对齐文本在android TextView
- 权限拒绝:start前台需要android.permission.FOREGROUND_SERVICE