【问题标题】:How to Copy Text to Clip Board in Android?如何在 Android 中将文本复制到剪贴板?
【发布时间】:2013-10-08 16:55:08
【问题描述】:

谁能告诉我当按下按钮时如何将特定文本视图中的文本复制到剪贴板?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainpage);
    textView = (TextView) findViewById(R.id.textview);
    copyText = (Button) findViewById(R.id.bCopy);
    copyText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            
            ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
            String getstring = textView.getText().toString();
            
            // Help to continue :)
        }
    });
}

当按下按钮bCopy时,我想将TextView textView中的文本复制到剪贴板。

【问题讨论】:

标签: android clipboard copy-paste clipboardmanager clipboard-interaction


【解决方案1】:

使用ClipboardManager

 ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); 
 ClipData clip = ClipData.newPlainText(label, text);
 clipboard.setPrimaryClip(clip);

确保您已导入 android.content.ClipboardManager 而不是 android.text.ClipboardManager。后者已弃用。 查看此link 了解更多信息。

【讨论】:

  • 这仅适用于 API11+,不适用于 GB 及以下
  • “标签”是干什么用的?
  • @androiddeveloper “label”参数解释:stackoverflow.com/questions/33207809/…
  • @smg 所以更适合开发人员?但它怎么会说它是为用户显示的呢?
  • 在androidx中它实际上变成了ClipboardManager clipboard = getSystemService(getContext(), ClipboardManager.class);
【解决方案2】:

这里是复制文本到剪贴板的方法:

private void setClipboard(Context context, String text) {
  if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) {
    android.text.ClipboardManager clipboard = (android.text.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
    clipboard.setText(text);
  } else {
    android.content.ClipboardManager clipboard = (android.content.ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
    android.content.ClipData clip = android.content.ClipData.newPlainText("Copied Text", text);
    clipboard.setPrimaryClip(clip);
  }
}

此方法适用于所有安卓设备。

【讨论】:

  • 我不明白“上下文”是什么意思。您能否添加一个如何正确调用该方法的示例?谢谢。
  • 嘿家伙,片段中需要上下文才能调用 getSystemService
  • @E_Blue context.getSystemService(Context.CLIPBOARD_SERVICE) ???真的???
  • @E_Blue 看起来你是一个在询问上下文的天真 android 开发人员。嗯,这也不是问题,但请注意你的语气,也对事情进行一些研究/研究。
【解决方案3】:

昨天我做了这门课。接受吧,它适用于所有 API 级别

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;

import android.annotation.SuppressLint;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.net.Uri;
import android.util.Log;
import de.lochmann.nsafirewall.R;

public class MyClipboardManager {

    @SuppressLint("NewApi")
    @SuppressWarnings("deprecation")
    public boolean copyToClipboard(Context context, String text) {
        try {
            int sdk = android.os.Build.VERSION.SDK_INT;
            if (sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
                android.text.ClipboardManager clipboard = (android.text.ClipboardManager) context
                        .getSystemService(context.CLIPBOARD_SERVICE);
                clipboard.setText(text);
            } else {
                android.content.ClipboardManager clipboard = (android.content.ClipboardManager) context
                        .getSystemService(context.CLIPBOARD_SERVICE);
                android.content.ClipData clip = android.content.ClipData
                        .newPlainText(
                                context.getResources().getString(
                                        R.string.message), text);
                clipboard.setPrimaryClip(clip);
            }
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    @SuppressLint("NewApi")
    public String readFromClipboard(Context context) {
        int sdk = android.os.Build.VERSION.SDK_INT;
        if (sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
            android.text.ClipboardManager clipboard = (android.text.ClipboardManager) context
                    .getSystemService(context.CLIPBOARD_SERVICE);
            return clipboard.getText().toString();
        } else {
            ClipboardManager clipboard = (ClipboardManager) context
                    .getSystemService(Context.CLIPBOARD_SERVICE);

            // Gets a content resolver instance
            ContentResolver cr = context.getContentResolver();

            // Gets the clipboard data from the clipboard
            ClipData clip = clipboard.getPrimaryClip();
            if (clip != null) {

                String text = null;
                String title = null;

                // Gets the first item from the clipboard data
                ClipData.Item item = clip.getItemAt(0);

                // Tries to get the item's contents as a URI pointing to a note
                Uri uri = item.getUri();

                // If the contents of the clipboard wasn't a reference to a
                // note, then
                // this converts whatever it is to text.
                if (text == null) {
                    text = coerceToText(context, item).toString();
                }

                return text;
            }
        }
        return "";
    }

    @SuppressLint("NewApi")
    public CharSequence coerceToText(Context context, ClipData.Item item) {
        // If this Item has an explicit textual value, simply return that.
        CharSequence text = item.getText();
        if (text != null) {
            return text;
        }

        // If this Item has a URI value, try using that.
        Uri uri = item.getUri();
        if (uri != null) {

            // First see if the URI can be opened as a plain text stream
            // (of any sub-type). If so, this is the best textual
            // representation for it.
            FileInputStream stream = null;
            try {
                // Ask for a stream of the desired type.
                AssetFileDescriptor descr = context.getContentResolver()
                        .openTypedAssetFileDescriptor(uri, "text/*", null);
                stream = descr.createInputStream();
                InputStreamReader reader = new InputStreamReader(stream,
                        "UTF-8");

                // Got it... copy the stream into a local string and return it.
                StringBuilder builder = new StringBuilder(128);
                char[] buffer = new char[8192];
                int len;
                while ((len = reader.read(buffer)) > 0) {
                    builder.append(buffer, 0, len);
                }
                return builder.toString();

            } catch (FileNotFoundException e) {
                // Unable to open content URI as text... not really an
                // error, just something to ignore.

            } catch (IOException e) {
                // Something bad has happened.
                Log.w("ClippedData", "Failure loading text", e);
                return e.toString();

            } finally {
                if (stream != null) {
                    try {
                        stream.close();
                    } catch (IOException e) {
                    }
                }
            }

            // If we couldn't open the URI as a stream, then the URI itself
            // probably serves fairly well as a textual representation.
            return uri.toString();
        }

        // Finally, if all we have is an Intent, then we can just turn that
        // into text. Not the most user-friendly thing, but it's something.
        Intent intent = item.getIntent();
        if (intent != null) {
            return intent.toUri(Intent.URI_INTENT_SCHEME);
        }

        // Shouldn't get here, but just in case...
        return "";
    }

}

【讨论】:

  • 你能添加必要的导入语句来使这个类工作吗?
  • @merlin2011 做到了,我想我忘记了 coerceToText(...) 方法。对不起
  • “coerceToText”有什么作用?另外,是否可以将其他类型的数据复制/粘贴到剪贴板(例如:位图)?
  • @A.S.为什么你自己写 corceToText 方法? !它已经与 api 一起可用,请参阅developer.android.com/reference/android/content/…
  • 但我认为开发人员有时间停止支持 API17 之前的内容。老人家单位不多,不下载新应用?例如,我在我的帆船上使用老单位进行导航,而其他一切都被清除了。我不介意误把这些单位扔到船上?
【解决方案4】:

作为一个方便的 kotlin 扩展:

fun Context.copyToClipboard(text: CharSequence){
    val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
    val clip = ClipData.newPlainText("label",text)
    clipboard.setPrimaryClip(clip)
}

更新:

如果你使用 ContextCompat,你应该使用:

ContextCompat.getSystemService(this, ClipboardManager::class.java)

【讨论】:

  • API 现在已更改为 clipboardManager = getSystemService(context, ClipboardManager::class.java)
  • 它实际上已更改为context.getSystemService(ClipboardManager::class.java) 您指向的是 ContextCompat 签名,不是吗?感谢您的反馈
  • 将最后一行改为clipboard.setPrimaryClip(clip)
【解决方案5】:

对于 Jetpack Compose

val localClipboardManager = LocalClipboardManager.current
localClipboardManager.setText(AnnotatedString("Your text here"))

【讨论】:

    【解决方案6】:

    就用这个吧。它仅适用于 android api >= 11,在此之前您必须使用 ClipData。

    ClipboardManager _clipboard = (ClipboardManager) _activity.getSystemService(Context.CLIPBOARD_SERVICE);
    _clipboard.setText(YOUR TEXT);
    

    希望对你有所帮助:)

    [2015 年 3 月 19 日更新] 就像Ujjwal Singh 所说的那样,setText 方法现在已弃用,您应该使用,就像文档推荐的那样,setPrimaryClip(clipData)

    【讨论】:

    • 那个我的变量名。如果您正在进行活动,请使用 (ClipboardManager) this.getSystemService(Context.CLIPBOARD_SERVICE); _clipboard.setText(YOUR TEXT);
    • 已弃用 - 不要使用 setText 使用 ClipData+setPrimaryClip
    • 对我来说,使用 setPrimaryClip 时也显示错误
    【解决方案7】:

    这可以像这样在 Kotlin 中完成:

    var clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
    var clip = ClipData.newPlainText("label", file.readText())
    clipboard.setPrimaryClip = clip
    

    file.readText() 是您的输入字符串。

    【讨论】:

    • 从 API 级别 29 开始,在 Kotlin 中必须使用 setPrimaryClip 而不是 primaryClip
    【解决方案8】:

    使用此代码

       private ClipboardManager myClipboard;
       private ClipData myClip;
       TextView textView;
       Button copyText;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mainpage);
        textView = (TextView) findViewById(R.id.textview);
        copyText = (Button) findViewById(R.id.bCopy);
        myClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
    
        copyText.setOnClickListener(new View.OnClickListener() {
    
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
    
    
               String text = textView.getText().toString();
               myClip = ClipData.newPlainText("text", text);
               myClipboard.setPrimaryClip(myClip);
               Toast.makeText(getApplicationContext(), "Text Copied", 
               Toast.LENGTH_SHORT).show(); 
            }
        });
    }
    

    【讨论】:

    • 非常感谢,它非常易于使用。
    【解决方案9】:

    使用此功能复制到剪贴板

    public void copyToClipboard(String copyText) {
        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(copyText);
        } else {
            android.content.ClipboardManager clipboard = (android.content.ClipboardManager)
                    getSystemService(Context.CLIPBOARD_SERVICE);
            android.content.ClipData clip = android.content.ClipData
                    .newPlainText("Your OTP", copyText);
            clipboard.setPrimaryClip(clip);
        }
        Toast toast = Toast.makeText(getApplicationContext(),
                "Your OTP is copied", Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.BOTTOM | Gravity.RIGHT, 50, 50);
        toast.show();
        //displayAlert("Your OTP is copied");
    }
    

    【讨论】:

      【解决方案10】:
      @SuppressLint({ "NewApi", "NewApi", "NewApi", "NewApi" })
      @SuppressWarnings("deprecation")
      @TargetApi(11)
      public void onClickCopy(View v) {   // User-defined onClick Listener
          int sdk_Version = android.os.Build.VERSION.SDK_INT;
          if(sdk_Version < android.os.Build.VERSION_CODES.HONEYCOMB) {
              android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
              clipboard.setText(textView.getText().toString());   // Assuming that you are copying the text from a TextView
              Toast.makeText(getApplicationContext(), "Copied to Clipboard!", Toast.LENGTH_SHORT).show();
          }
          else { 
              android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); 
              android.content.ClipData clip = android.content.ClipData.newPlainText("Text Label", textView.getText().toString());
              clipboard.setPrimaryClip(clip);
              Toast.makeText(getApplicationContext(), "Copied to Clipboard!", Toast.LENGTH_SHORT).show();
          }   
      }
      

      【讨论】:

        【解决方案11】:

        Kotlin 扩展功能 2021:

        fun Context.copyToClipboard(text: CharSequence){
            val clipboard = ContextCompat.getSystemService(this,ClipboardManager::class.java)
            clipboard?.setPrimaryClip(ClipData.newPlainText("",text))
        }
        

        【讨论】:

          【解决方案12】:

          使用这个方法:

           ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); 
           ClipData clip = ClipData.newPlainText(label, text);
           clipboard.setPrimaryClip(clip);
          

          在setPrimaryClip的地方我们还可以使用以下方法:

          void    clearPrimaryClip()
          

          清除剪贴板上的所有当前主剪辑。

          ClipData    getPrimaryClip()
          

          返回剪贴板上的当前主剪辑。

          ClipDescription getPrimaryClipDescription()
          

          返回剪贴板上当前主剪辑的描述,但不返回其数据的副本。

          CharSequence    getText()
          

          此方法已弃用。请改用 getPrimaryClip()。这会检索主剪辑并尝试将其强制转换为字符串。

          boolean hasPrimaryClip()
          

          如果剪贴板上当前有主剪辑,则返回 true。

          【讨论】:

            【解决方案13】:

            使用 Jetpack Compose,这真的很容易:

            AmbientClipboardManager.current.setText(AnnotatedString("Copied Text"))
            

            【讨论】:

              【解决方案14】:

              int sdk = android.os.Build.VERSION.SDK_INT;

                  if (sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
                      android.text.ClipboardManager clipboard = (android.text.ClipboardManager) DetailView.this
                              .getSystemService(Context.CLIPBOARD_SERVICE);
                      clipboard.setText("" + yourMessage.toString());
                      Toast.makeText(AppCstVar.getAppContext(),
                              "" + getResources().getString(R.string.txt_copiedtoclipboard),
                              Toast.LENGTH_SHORT).show();
                  } else {
                      android.content.ClipboardManager clipboard = (android.content.ClipboardManager) DetailView.this
                              .getSystemService(Context.CLIPBOARD_SERVICE);
                      android.content.ClipData clip = android.content.ClipData
                              .newPlainText("message", "" + yourMessage.toString());
                      clipboard.setPrimaryClip(clip);
                      Toast.makeText(AppCstVar.getAppContext(),
                              "" + getResources().getString(R.string.txt_copiedtoclipboard),
                              Toast.LENGTH_SHORT).show();
                  }
              

              【讨论】:

                【解决方案15】:
                    String stringYouExtracted = referraltxt.getText().toString();
                    android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE);
                    android.content.ClipData clip = android.content.ClipData.newPlainText("Copied Text", stringYouExtracted);
                
                clipboard.setPrimaryClip(clip);
                        Toast.makeText(getActivity(), "Copy coupon code copied to clickboard!", Toast.LENGTH_SHORT).show();
                

                【讨论】:

                  【解决方案16】:

                  使用 Java 的简单易用的 Android。

                  copytext.setOnClickListener(v -> {
                              ClipboardManager myClipboard;
                              myClipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
                              ClipData myClip;
                              String Text = "Hello World!";
                              myClip = ClipData.newPlainText("text", Text);
                              myClipboard.setPrimaryClip(myClip);
                  
                              Toast.makeText(this, "Copy", Toast.LENGTH_SHORT).show();
                          });
                  

                  【讨论】:

                    【解决方案17】:
                     ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE); 
                     ClipData clip = ClipData.newPlainText(label, text);
                     clipboard.setPrimaryClip(clip);
                    

                    【讨论】:

                    • 不要忘记之前可以在mContext中定义的上下文......或者只是添加MyActivity.this,getAcplicationContext......还是一样的getApplicationContext.getSystemService
                    【解决方案18】:

                    ==>点击查看复制内容太容易了。

                    -> 将文本存储到字符串变量中。

                    -> 创建 ClipboardManager 的变量

                    -> 制作 ClipData 的变量

                    -> 必须从包中导入为“android.content”。

                    -> 将剪辑设置为clipboard.setPrimaryclick。

                    -> 完成。

                    例如

                    import android.content.ClipboardManager;
                    
                    import android.content.ClipData;
                    
                    
                    
                    
                    
                        stringNodetxt.setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                    
                                String stringNodeCopied= stringNodetxt.getText().toString();
                    
                                ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
                                ClipData clip = android.content.ClipData.newPlainText("Copied", stringNodeCopied);
                    
                                clipboard.setPrimaryClip(clip);
                                Toast.makeText(getBaseContext(), "copied to clipboard!", Toast.LENGTH_SHORT).show();
                            }
                        });
                    

                    【讨论】:

                      【解决方案19】:

                      用于将文本复制到剪贴板的简单 Kotlin 扩展函数

                      fun Context.copyToClipboard(clipLabel: String, text: CharSequence){
                          val clipboard = ContextCompat.getSystemService(this, ClipboardManager::class.java)
                          clipboard?.setPrimaryClip(ClipData.newPlainText(clipLabel, text))
                      
                          toast("Copied $clipLabel")
                      }
                      

                      【讨论】:

                        【解决方案20】:

                        试试下面的代码。它将支持最新的 API:

                        ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
                                                if (clipboard.hasPrimaryClip()) {
                                                    android.content.ClipDescription description = clipboard.getPrimaryClipDescription();
                                                    android.content.ClipData data = clipboard.getPrimaryClip();
                                                    if (data != null && description != null && description.hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN))
                                                    {
                                                        String url= (String) clipboard.getText();
                                                        searchText.setText(url);
                                                        System.out.println("data="+data+"description="+description+"url="+url);
                                                    }}
                        

                        【讨论】:

                          【解决方案21】:

                          Kotlin 辅助方法在 TextView 上附加单击以复制文本

                          把这个方法放在 Util 类的某个地方。此方法将 textview 上的单击侦听器附加到单击该 textView 时将 textView 的内容复制到 clipText

                          /**
                           * Param:  cliplabel, textview, context
                           */
                          fun attachClickToCopyText(textView: TextView?, clipLabel: String, context: Context?) {
                              if (textView != null && null != context) {
                                  textView.setOnClickListener {
                                      val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
                                      val clip = ClipData.newPlainText(clipLabel, textView!!.text)
                                      clipboard.primaryClip = clip
                                      Snackbar.make(textView,
                                              "Copied $clipLabel", Snackbar.LENGTH_LONG).show()
                                  }
                              }
                          
                          }
                          

                          【讨论】:

                            【解决方案22】:

                            您可以在 onclick 按钮事件时执行此复制到剪贴板功能。所以把这些代码行放在你的按钮 onClickListerner 中

                            android.content.ClipboardManager clipboardManager = (android.content.ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
                            android.content.ClipData clipData = android.content.ClipData.newPlainText("Text Label", ViewPass.getText().toString());
                            clipboardManager.setPrimaryClip(clipData);
                            Toast.makeText(getApplicationContext(),"Copied from Clipboard!",Toast.LENGTH_SHORT).show();
                            

                            【讨论】:

                              【解决方案23】:

                              Kotlin 我有一个扩展

                              fun Context.copyToClipboard(text: String) {
                                val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
                                val clip =
                                  ClipData.newPlainText(getString(R.string.copy_clipboard_label, getString(R.string.app_name)),text)
                                clipboard.setPrimaryClip(clip)
                              }
                              

                              【讨论】:

                                【解决方案24】:

                                在 Android 中复制任何文本:

                                            TextView text = findViewById(R.id.text_id);
                                            ImageView icons = findViewById(R.id.copy_icon);
                                
                                            icons.setOnClickListener(new View.OnClickListener() {
                                                @Override
                                                public void onClick(View v) {
                                                    ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
                                                    ClipData clipData = ClipData.newPlainText("text whatever you want", text.getText().toString());
                                                    clipboardManager.setPrimaryClip(clipData);
                                
                                                    Toast.makeText(context, "Text Copied", Toast.LENGTH_SHORT).show();
                                                }
                                            });
                                

                                【讨论】:

                                  【解决方案25】:

                                  搜索剪贴板列表首先获取剪贴板对象,如下所示:

                                  private val clipboard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
                                  

                                  然后通过此函数检查剪贴板中是否有任何数据:

                                  fun isClipboardContainsData() : Boolean{
                                          return when{
                                              !clipboard.hasPrimaryClip() -> false
                                              else -> true
                                          }
                                      }
                                  

                                  然后使用此函数遍历剪贴板对象,如下所示:

                                  fun searchClipboard() : ClipData.Item? {
                                          return if (isClipboardContainsData()){
                                  
                                              val items = clipboard.primaryClip
                                              val clipboardSize = items?.itemCount ?: 0
                                              for (i in 0..clipboardSize) {
                                                  val item = items?.getItemAt(i)
                                                  return if (item != null){
                                                         return item
                                                  }else
                                                      null
                                              }
                                              return null
                                          }else
                                              null
                                  
                                      }
                                  

                                  在这里您可以看到 searchClipboard Item 将返回 ClipData.Item 类型的项目,剪贴板包含 ClipData.Item 列表,如果您通过剪贴板的实现,您会发现有关 ClipData.Item 的内容:

                                  public static class Item {
                                      final CharSequence mText;
                                      final String mHtmlText;
                                      final Intent mIntent;
                                      @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
                                      Uri mUri;
                                  }
                                  

                                  所以您可以在剪贴板项目中保存的内容可能是以下类型:

                                  1. 字符序列
                                  2. 字符串
                                  3. Intent(这支持复制应用程序快捷方式)
                                  4. Uri(用于从内容提供者复制复杂数据)

                                  【讨论】:

                                    【解决方案26】:

                                    如果你想缩短使用时间:

                                    ClipData clip = ClipData.newPlainText(label, text);
                                    ((ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(clip);
                                    

                                    【讨论】:

                                      【解决方案27】:

                                      只要写下这段代码:

                                      clipboard.setText(getstring);
                                      

                                      【讨论】:

                                      • 您忘记初始化clipboard。但感谢setText。它已被弃用,因此请使用val clip = ClipData.newPlainText(null, text) clipboard.setPrimaryClip(clip)
                                      • 你需要先获取剪贴板对象
                                      猜你喜欢
                                      • 2013-05-02
                                      • 1970-01-01
                                      • 1970-01-01
                                      • 2012-04-05
                                      • 1970-01-01
                                      • 2012-10-02
                                      • 2019-11-23
                                      • 1970-01-01
                                      • 1970-01-01
                                      相关资源
                                      最近更新 更多