我正在构建一个Android应用程序,我想复制EditText小部件的文本值。这是可能的用户按菜单+A然后菜单+C复制的值,但我如何通过编程做到这一点?
当前回答
对于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)
其他回答
所以每个人都同意应该怎么做,但由于没有人想要给出一个完整的解决方案,下面是:
int sdk = android.os.Build.VERSION.SDK_INT;
if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.setText("text to clip");
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData clip = android.content.ClipData.newPlainText("text label","text to clip");
clipboard.setPrimaryClip(clip);
}
我假设你在manifest中声明了如下内容:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="14" />
除非你的应用程序是默认的输入法编辑器(IME)或者是当前有焦点的应用程序,否则你的应用程序不能在Android 10或更高版本上访问剪贴板数据。 https://developer.android.com/about/versions/10/privacy/changes#clipboard-data
google带你到android.content.ClipboardManager,你可以决定,就像我做的那样,Clipboard在API < 11上是不可用的,因为文档页面说“Since: API Level 11”。
实际上有两个类,第二个类扩展了第一个类——android.text.ClipboardManager和android.content.ClipboardManager。
android.text.ClipboardManager从API 1开始就存在了,但它只适用于文本内容。
android.content.ClipboardManager是使用剪贴板的首选方式,但它在API级别< 11(蜂窝)上不可用。
要获得其中任何一个,你需要以下代码:
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
但对于API < 11,你必须导入android.text.ClipboardManager和API >= 11 android.content.ClipboardManager
对于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)
}
public void onClick (View v)
{
switch (v.getId())
{
case R.id.ButtonCopy:
copyToClipBoard();
break;
case R.id.ButtonPaste:
pasteFromClipBoard();
break;
default:
Log.d(TAG, "OnClick: Unknown View Received!");
break;
}
}
// Copy EditCopy text to the ClipBoard
private void copyToClipBoard()
{
ClipboardManager clipMan = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
clipMan.setPrimaryClip(editCopy.getText());
}
你可以试试这个。
推荐文章
- 警告:API ' variable . getjavacompile()'已过时,已被' variable . getjavacompileprovider()'取代
- 安装APK时出现错误
- 碎片中的onCreateOptionsMenu
- TextView粗体通过XML文件?
- 如何使线性布局的孩子之间的空间?
- DSL元素android.dataBinding。enabled'已过时,已被'android.buildFeatures.dataBinding'取代
- ConstraintLayout:以编程方式更改约束
- PANIC: AVD系统路径损坏。检查ANDROID_SDK_ROOT值
- 如何生成字符串类型的buildConfigField
- Recyclerview不调用onCreateViewHolder
- Android API 21工具栏填充
- Android L中不支持操作栏导航模式
- 如何在TextView中添加一个子弹符号?
- PreferenceManager getDefaultSharedPreferences在Android Q中已弃用
- 在Android Studio中创建aar文件