मैं एक Android ऐप बना रहा हूं और मैं एक EditText विजेट के टेक्स्ट मान को कॉपी करना चाहता हूं। यह प्रेस करने के लिए उपयोगकर्ता के लिए संभव है Menu+A
तो Menu+C
मान की प्रतिलिपि करने के लिए है, लेकिन मैं कैसे इस प्रोग्राम के रूप में करना होगा?
मैं एक Android ऐप बना रहा हूं और मैं एक EditText विजेट के टेक्स्ट मान को कॉपी करना चाहता हूं। यह प्रेस करने के लिए उपयोगकर्ता के लिए संभव है Menu+A
तो Menu+C
मान की प्रतिलिपि करने के लिए है, लेकिन मैं कैसे इस प्रोग्राम के रूप में करना होगा?
जवाबों:
उपयोग ClipboardManager#setPrimaryClip
विधि:
import android.content.ClipboardManager;
// ...
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", "Text to copy");
clipboard.setPrimaryClip(clip);
import android.content.ClipboardManager;
label
?
Context context = getApplicationContext(); Toast.makeText(context, "text copied", Toast.LENGTH_LONG).show();
तो हर कोई इस बात पर सहमत है कि यह कैसे किया जाना चाहिए, लेकिन चूंकि कोई भी संपूर्ण समाधान नहीं देना चाहता है, यहां यह है:
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);
}
मुझे लगता है कि आपके पास प्रकट में घोषित की तरह कुछ है:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="14" />
label
में newPlainText
विधि का उपयोग क्या है ? डॉक्यूमेंटेशन में कहा गया है label User-visible label for the clip data.
। लेकिन label
उपयोगकर्ता को कब दिखाई देता है? और मुझे किस तरह का मूल्य / नाम देना चाहिए label
?
Googling आपको android.content.ClipboardManager पर लाता है और आप तय कर सकते हैं, जैसा कि मैंने किया, कि क्लिपबोर्ड API <11 पर उपलब्ध नहीं है, क्योंकि प्रलेखन पृष्ठ "चूंकि: एपीआई स्तर 11" कहता है।
वास्तव में दो वर्ग हैं, दूसरा पहला - android.text.ClipboardManager और android.content.ClipboardManager का विस्तार।
android.text.ClipboardManager एपीआई 1 के बाद से मौजूद है, लेकिन यह केवल पाठ सामग्री के साथ काम करता है।
android.content.ClipboardManager क्लिपबोर्ड के साथ काम करने का पसंदीदा तरीका है, लेकिन यह एपीआई स्तर <11 (हनीकॉम्ब) पर उपलब्ध नहीं है।
उनमें से किसी को पाने के लिए आपको निम्नलिखित कोड की आवश्यकता होगी:
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
लेकिन API <11 के लिए आपको आयात करना होगा android.text.ClipboardManager
और API> = 11 के लिए android.content.ClipboardManager
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());
}
आप इस कोशिश कर सकते हैं ..
एडिटटेक्स्ट से कुछ कॉपी और पेस्ट फ़ंक्शंस को लागू करने के लिए कुछ कोड यहां दिए गए हैं (संस्करण की जांच के लिए वारपज़िट के लिए धन्यवाद)। आप इन्हें अपने बटन के ऑनक्लिक ईवेंट पर हुक कर सकते हैं।
public void copy(View v) {
int startSelection = txtNotes.getSelectionStart();
int endSelection = txtNotes.getSelectionEnd();
if ((txtNotes.getText() != null) && (endSelection > startSelection ))
{
String selectedText = txtNotes.getText().toString().substring(startSelection, endSelection);
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(selectedText);
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData clip = android.content.ClipData.newPlainText("WordKeeper",selectedText);
clipboard.setPrimaryClip(clip);
}
}
}
public void paste(View v) {
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);
if (clipboard.getText() != null) {
txtNotes.getText().insert(txtNotes.getSelectionStart(), clipboard.getText());
}
} else {
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
android.content.ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);
if (item.getText() != null) {
txtNotes.getText().insert(txtNotes.getSelectionStart(), item.getText());
}
}
}
Android Oreo के रूप में, समर्थन लाइब्रेरी केवल API 14. तक जाती है। अधिकांश नए ऐप्स में संभवतः 14 मिनट की न्यूनतम API भी होती है, और इस प्रकार कुछ अन्य उत्तरों में उल्लिखित API 11 के साथ समस्याओं के बारे में चिंता करने की आवश्यकता नहीं है। बहुत सारे कोड को साफ किया जा सकता है। (यदि आप अभी भी निचले संस्करणों का समर्थन कर रहे हैं तो मेरा संपादन इतिहास देखें।)
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()
।null
। आप हर एक की जाँच कर सकते हैं यदि आप इस तरह से अधिक पठनीय पाते हैं।TextView के लिए मानक कॉपी / पेस्ट को सक्षम करने के लिए, U निम्नलिखित में से एक चुन सकता है:
लेआउट फ़ाइल में बदलें: अपने टेक्स्ट दृश्य में नीचे की संपत्ति जोड़ें
android:textIsSelectable="true"
अपने जावा क्लास में इस लाइन को व्याकरणिक रूप से दो सेट लिखें।
myTextView.setTextIsSelectable(true);
और TextView पर लंबे समय तक प्रेस आप कॉपी / पेस्ट एक्शन बार देख सकते हैं।
@FlySwat ने पहले ही सही जवाब दे दिया, मैं अभी पूरा जवाब साझा कर रहा हूं:
ClipboardManager.setPrimaryClip ( http://developer.android.com/reference/android/content/ClipboardManager.html ) विधि का उपयोग करें :
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", "Text to copy");
clipboard.setPrimaryClip(clip);
label
क्लिप डेटा के लिए उपयोगकर्ता-दृश्य लेबल कहां है और क्लिप
text
में वास्तविक पाठ है। आधिकारिक डॉक्स के अनुसार ।
इस आयात का उपयोग करना महत्वपूर्ण है:
import android.content.ClipboardManager;
यहाँ मेरा काम कोड है
/**
* 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);
}
}
कोटलिन के लिए, हम निम्नलिखित विधि का उपयोग कर सकते हैं। आप इस विधि को किसी गतिविधि या टुकड़े के अंदर चिपका सकते हैं।
fun copyToClipBoard(context: Context, message: String) {
val clipBoard = context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clipData = ClipData.newPlainText("label",message)
clipBoard.setPrimaryClip(clipData)
}
context.
हो सकता है क्योंकि मैं इसे एक टुकड़ा के भीतर कर रहा हूँ - भाग मुझे याद आ रहा था।