android 复制字符串,复制和粘贴  |  Android 开发者  |  Android Developers

2023-12-19 00:40

本文主要是介绍android 复制字符串,复制和粘贴  |  Android 开发者  |  Android Developers,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Android 提供了一个强大的基于剪贴板的框架,用于复制和粘贴。它支持简单和复杂的数据类型,包括文本字符串、复杂数据结构、文本、二进制流数据,甚至应用资源。简单的文本数据直接存储在剪贴板中,而复杂的数据则存储为引用,执行粘贴操作的应用使用 Content Provider 对其进行解析。复制和粘贴既可以在应用内进行,也可以在实现了该框架的应用之间进行。

由于该框架的一部分使用 Content Provider,因此本主题假设您对 Android Content Provider API 已有一定了解。我们在 Content Provider 这一主题中对该 API 进行了介绍。

剪贴板框架

使用剪贴板框架时,您会将数据放入一个剪贴对象中,然后将该剪贴对象放到系统级剪贴板中。剪贴对象可以采用以下三种形式之一:

Text

一个文本字符串。您可以直接将字符串放入剪贴对象中,然后将剪贴对象放到剪贴板中。如需粘贴字符串,您需要从剪贴板获取剪贴对象,然后将字符串复制到应用的存储空间。

URI

一个

Intent

一个

剪贴板一次只保留一个剪贴对象。当应用将一个剪贴对象放到剪贴板时,上一个剪贴对象会消失。

如果您希望允许用户将数据粘贴到您的应用中,则无需处理所有类型的数据。您可以先检查剪贴板中的数据,然后再向用户提供粘贴数据的选项。除了具有特定的数据形式之外,剪贴对象还包含可告知您可用的 MIME 类型的元数据。此元数据可以帮助您确定应用是否可以利用剪贴板数据做一些有用的事情。例如,如果您有一个主要处理文本的应用,不妨忽略包含 URI 或 Intent 的剪贴对象。

此外,您可能还希望无论剪贴板中的数据采用何种形式,用户都可以粘贴文本。为此,您可以将剪贴板数据强制转换为文本表示形式,然后粘贴相应文本。将剪贴板数据强制转换为文本部分对这一点进行了介绍。

剪贴板类

这一部分介绍了剪贴板框架所使用的类。

ClipboardManager

在 Android 系统中,系统剪贴板由全局

ClipData、ClipData.Item 和 ClipDescription

如需将数据添加到剪贴板,您需要创建一个

Text

URI

一个

Intent

一个

您可以向一个剪切添加多个

ClipData 便捷方法

将剪贴板数据强制转换为文本

即使您的应用仅处理文本,您也可以从剪贴板复制非文本数据,只需使用

Text

URI

如果 如果此 URI 是内容 URI,并且提供程序可以返回文本流,则

如果此 URI 是内容 URI,但提供程序不提供文本流,则

如果此 URI 不是内容 URI,则

Intent

图 1 汇总了剪贴板框架。如需复制数据,应用需要将一个

1b6b6f228b36d1cb27991551cb33519a.png

图 1. Android 剪贴板框架

复制到剪贴板

如前所述,如需将数据复制到剪贴板,您需要获取全局

如果您要使用内容 URI 复制数据,请设置一个 Content Provider。

Note Pad 示例应用是使用 Content Provider 进行复制和粘贴的一个例子。NotePadProvider 类实现了相应 Content Provider。NotePad 类定义了 Provider 与其他应用之间的约定,包括受支持的 MIME 类型。

获取系统剪贴板:

Kotlin

when(menuItem.itemId) {

...

R.id.menu_copy -> { // if the user selects copy

// Gets a handle to the clipboard service.

val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager

}

}Java

...

// if the user selects copy

case R.id.menu_copy:

// Gets a handle to the clipboard service.

ClipboardManager clipboard = (ClipboardManager)

getSystemService(Context.CLIPBOARD_SERVICE);

将数据复制到新的

对于 Text

Kotlin

// Creates a new text clip to put on the clipboard

val clip: ClipData = ClipData.newPlainText("simple text", "Hello, World!")Java

// Creates a new text clip to put on the clipboard

ClipData clip = ClipData.newPlainText("simple text", "Hello, World!");

对于 URI

以下代码段通过将记录 ID 编码到提供程序的内容 URI 来构建 URI。在 URI 中对标识符进行编码部分对此方法进行了更详细的说明:

Kotlin

// Creates a Uri based on a base Uri and a record ID based on the contact's last name

// Declares the base URI string

const val CONTACTS = "content://com.example.contacts"

// Declares a path string for URIs that you use to copy data

const val COPY_PATH = "/copy"

// Declares the Uri to paste to the clipboard

val copyUri: Uri = Uri.parse("$CONTACTS$COPY_PATH/$lastName")

...

// Creates a new URI clip object. The system uses the anonymous getContentResolver() object to

// get MIME types from provider. The clip object's label is "URI", and its data is

// the Uri previously created.

val clip: ClipData = ClipData.newUri(contentResolver, "URI", copyUri)Java

// Creates a Uri based on a base Uri and a record ID based on the contact's last name

// Declares the base URI string

private static final String CONTACTS = "content://com.example.contacts";

// Declares a path string for URIs that you use to copy data

private static final String COPY_PATH = "/copy";

// Declares the Uri to paste to the clipboard

Uri copyUri = Uri.parse(CONTACTS + COPY_PATH + "/" + lastName);

...

// Creates a new URI clip object. The system uses the anonymous getContentResolver() object to

// get MIME types from provider. The clip object's label is "URI", and its data is

// the Uri previously created.

ClipData clip = ClipData.newUri(getContentResolver(), "URI", copyUri);

对于 Intent

以下代码段为应用构建一个 Intent,然后将其放入剪贴对象中:

Kotlin

// Creates the Intent

val appIntent = Intent(this, com.example.demo.myapplication::class.java)

...

// Creates a clip object with the Intent in it. Its label is "Intent" and its data is

// the Intent object created previously

val clip: ClipData = ClipData.newInten

这篇关于android 复制字符串,复制和粘贴  |  Android 开发者  |  Android Developers的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/510353

相关文章

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32