Android에서 텍스트를 클립보드에 복사하는 방법?
버튼을 눌렀을 때 특정 텍스트 뷰에 있는 텍스트를 클립보드에 복사하는 방법을 알려줄 수 있는 사람이 있습니까?
@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
를 누릅니다.
클립보드 관리자 사용
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText(label, text);
clipboard.setPrimaryClip(clip);
가져왔는지 확인합니다.android.content.ClipboardManager
그리고 아닙니다.android.text.ClipboardManager
후자는 사용되지 않습니다.자세한 내용은 이 링크를 참조하십시오.
여기서 텍스트를 클립보드에 복사하는 방법은 다음과 같습니다.
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);
}
}
이 방법은 모든 안드로이드 기기에서 작동합니다.
편리한 코틀린 확장으로서:
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 레벨을 대상으로 합니다.
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 "";
}
}
제트팩 합성용
val localClipboardManager = LocalClipboardManager.current
localClipboardManager.setText(AnnotatedString("Your text here"))
이것만 쓰세요.이는 Android api >= 11에서만 작동합니다. 그 전에는 ClipData를 사용해야 합니다.
ClipboardManager _clipboard = (ClipboardManager) _activity.getSystemService(Context.CLIPBOARD_SERVICE);
_clipboard.setText(YOUR TEXT);
도움이 되었기를 바랍니다 :)
[UPDATE 3/19/2015] Ujjwal Singh가 지금은 그 방법이 더 이상 사용되지 않는다고 말했듯이, 당신은 문서들이 추천하는 것처럼, setPrimaryClip(clipData)을 사용해야 합니다.
이것은 코틀린에서 다음과 같이 수행할 수 있습니다.
var clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
var clip = ClipData.newPlainText("label", file.readText())
clipboard.setPrimaryClip = clip
어디에file.readText()
입력 문자열입니다.
코틀린 확장 함수 2021:
fun Context.copyToClipboard(text: CharSequence){
val clipboard = ContextCompat.getSystemService(this,ClipboardManager::class.java)
clipboard?.setPrimaryClip(ClipData.newPlainText("",text))
}
이 코드를 사용합니다.
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();
}
});
}
클립보드에 복사하려면 이 함수를 사용합니다.
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");
}
@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();
}
}
편집 텍스트에서 텍스트를 복사하려면 먼저 텍스트를 작성합니다.
EditText mResultEt = findViewById(R.id.resultEt);
클릭 후 텍스트를 복사할 수 있는 원버튼 만들기
ImageButton copyClipBoard = findViewById(R.id.btn_copy);
그런 다음 단추의 수신기를 사용합니다.
자바
copyClipBoard.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ClipboardManager clipboardManager = (ClipboardManager)
getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clipData = ClipData.newPlainText("nonsense_data",
mResultEt.getText().toString());
clipboardManager.setPrimaryClip(clipData);
Toast.makeText(MainActivity.this, R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show();
}
});
코틀린
btn1.setOnClickListener{
val clipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
val clipData = ClipData.newPlainText(
"nonsense_data",
content_et.getText().toString()
)
clipboardManager.setPrimaryClip(clipData)
Toast.makeText(this@MainActivity, R.string.copied_to_clipboard, Toast.LENGTH_SHORT).show()
}
그리고 이것을 꼭 수입하세요.
import android.content.ClipboardManager;
이 항목을 가져오지 않음
android.text.ClipboardManager
다음 방법을 사용합니다.
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를 반환합니다.
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();
});
Jetpack Composite를 사용하면 매우 간단합니다.
AmbientClipboardManager.current.setText(AnnotatedString("Copied Text"))
코틀린에서 가장 간단한 코드
val myClipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager val myClip: ClipData = ClipData.newPlainText("Label", "text") myClipboard.setPrimaryClip(myClip)
참고: Android.content를 가져왔는지 확인합니다.클립보드 관리자 및 Android.text가 아닙니다.클립보드 관리자.후자는 사용되지 않습니다.
int sdk = Android.os.빌드.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();
}
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();
ClipboardManager clipboard = (ClipboardManager) mContext.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText(label, text);
clipboard.setPrimaryClip(clip);
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
val clipboardManager = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
clipboardManager.setPrimaryClip(ClipData.newPlainText("text","this is copied...paste it" ))
텍스트를 클립보드에 복사하기 위한 단순 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")
}
다음 코드를 사용해 보십시오.최신 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);
}}
텍스트 보기에서 텍스트를 복사하기 위해 클릭을 첨부하는 Kotlin 도우미 방법
이 메소드를 Util 클래스 어딘가에 놓습니다.이 방법은 텍스트 보기에서 클릭 수신기를 텍스트 내용 복사에 첨부합니다. 클립에 보기해당 텍스트를 클릭하면 텍스트 보기
/**
* 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()
}
}
}
클릭 버튼 이벤트 시 클립보드에 복사 기능을 수행할 수 있습니다. 따라서 클릭 리스터너의 버튼 안에 이 코드 라인을 넣습니다.
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();
코틀린에서 나는 이것에 대한 연장을 가지고 있습니다.
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)
}
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();
}
});
클립보드 목록을 검색하려면 먼저 다음과 같은 클립보드 개체를 가져옵니다.
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
}
여기서 검색 클립보드 항목이 ClipData 유형의 항목을 반환하는 것을 볼 수 있습니다.항목, 클립보드에는 클립 데이터 목록이 들어 있습니다.항목 및 클립보드 구현을 거치면 ClipData에 대해 알 수 있습니다.항목:
public static class Item {
final CharSequence mText;
final String mHtmlText;
final Intent mIntent;
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
Uri mUri;
}
클립보드 항목에 넣을 수 있는 내용은 다음과 같습니다.
- CharSequence
- 끈
- 의도(응용프로그램 바로 가기 복사 지원)
- URI(콘텐츠 공급자로부터 복잡한 데이터를 복사하기 위한)
사용 시간을 단축하려면 다음을 수행합니다.
ClipData clip = ClipData.newPlainText(label, text);
((ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE)).setPrimaryClip(clip);
==> 보기 클릭 한 번으로 컨텐츠를 복사하기가 너무 쉽습니다.
-> String 변수에 텍스트를 저장합니다.
-> 클립보드 관리자 변수 만들기
-> Clip Data 변수 만들기
-> 패키지에서 "android.content"로 가져와야 합니다.
-> 클립을 클립보드에 설정합니다. set Primary click.
-> 완료.
전에
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();
}
});
코틀린을 위하여 버튼 안에 이 코드를 입력하면 됩니다.Fragment 클래스에 사용할 수 있는 코드입니다.
var myClipboard = getSystemService(requireContext(), ClipboardManager::class.java) as ClipboardManager
val copyText = quotes//quotes is actual text(I want to copy) that is assign in copyText.
val clip = ClipData.newPlainText("Copied",copyText)
myClipboard.setPrimaryClip(clip)
Toast.makeText(requireActivity(), "Copied", Toast.LENGTH_SHORT).show()
언급URL : https://stackoverflow.com/questions/19253786/how-to-copy-text-to-clip-board-in-android
'programing' 카테고리의 다른 글
MongoDB에 파일을 저장하려면 어떻게 해야 합니까? (0) | 2023.06.23 |
---|---|
iis에서 작업자 프로세스로 인한 CPU 사용을 100% 방지하는 방법 (0) | 2023.06.23 |
사이드바에 페이지 추가 (0) | 2023.06.23 |
woocommerce 새 주문 전자 메일에 제품 미리 보기 표시 (0) | 2023.06.23 |
WKWebView에서 target="_blank" 링크를 열지 않는 이유는 무엇입니까? (0) | 2023.06.23 |