कैसे अपने Android एप्लिकेशन में पाठ प्रोग्राम के रूप में कॉपी करने के लिए?

वोट
181

मैं एक Android ऐप्लिकेशन का निर्माण कर रहा हूँ और मैं एक EditText विजेट का पाठ मान की प्रतिलिपि बनाना चाहते। यह उपयोगकर्ता प्रेस करने के लिए संभव है Menu+Aतो Menu+Cमान की प्रतिलिपि करने के लिए है, लेकिन मैं कैसे इस प्रोग्राम के रूप में करना होगा?

26/10/2008 को 18:13
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


10 जवाब

वोट
325

http://developer.android.com/reference/android/content/ClipboardManager.html

का प्रयोग करें ClipboardManager.setPrimaryClipविधि:

ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
ClipData clip = ClipData.newPlainText("label", "Text to copy");
clipboard.setPrimaryClip(clip);
26/10/2008 को 18:20
का स्रोत उपयोगकर्ता

वोट
12
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());
}

आप इस कोशिश कर सकते हैं ..

31/10/2011 को 13:01
का स्रोत उपयोगकर्ता

वोट
13

Googling android.content.ClipboardManager पर ले आता है और आप तय कर सकता है, जैसा कि मैंने किया था, कि क्लिपबोर्ड नहीं एपीआई <11 पर उपलब्ध है, क्योंकि प्रलेखन पेज कहते हैं, "जब से: एपीआई स्तर 11" है।

android.text.ClipboardManager और android.content.ClipboardManager - वहाँ वास्तव में दो वर्गों, दूसरा एक पहले का विस्तार कर रहे हैं।

android.text.ClipboardManager API, 1 के बाद से विद्यमान है, लेकिन यह केवल पाठ सामग्री के साथ काम करता है।

android.content.ClipboardManager क्लिपबोर्ड के साथ काम करने के लिए पसंदीदा तरीका है, लेकिन यह एपीआई स्तर <11 (Honeycomb) पर उपलब्ध नहीं है।

उनमें से किसी को प्राप्त करने के लिए आप निम्न कोड की जरूरत है:

ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

लेकिन के लिए एपीआई <11 आपके पास आयात करने के लिए android.text.ClipboardManagerऔर के लिए एपीआई> = 11 android.content.ClipboardManager

30/03/2012 को 11:59
का स्रोत उपयोगकर्ता

वोट
205

तो हर कोई यह कैसे किया जाना चाहिए पर सहमत हैं, लेकिन कोई भी के बाद से एक पूर्ण समाधान देना चाहते हैं, यहाँ जाता है:

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" />
13/06/2012 को 10:56
का स्रोत उपयोगकर्ता

वोट
7

यहाँ से EditText कुछ कॉपी और पेस्ट कार्यों को लागू करने (धन्यवाद संस्करण की जांच के लिए Warpzit करने के लिए) कुछ कोड है। आप अपने बटन के ऑनक्लिक ईवेंट के लिए इन हुक कर सकते हैं।

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());
        }
    }
}
11/11/2014 को 15:45
का स्रोत उपयोगकर्ता

वोट
4

TextView के लिए मानक कॉपी / पेस्ट सक्षम करने के लिए, यू निम्न में से एक चुन सकते हैं:

लेआउट फ़ाइल में बदलें: अपने TextView के लिए संपत्ति नीचे जोड़ने

android:textIsSelectable="true"

अपने जावा वर्ग में इस लाइन दो व्याकरण की दृष्टि से सेट लिखें।

myTextView.setTextIsSelectable(true);

और TextView पर दबाकर रखें जिसे आप कॉपी / पेस्ट कार्रवाई बार देख सकते हैं।

05/08/2016 को 11:47
का स्रोत उपयोगकर्ता

वोट
1

प्रतिलिपि

इस उत्तर दो करने के लिए कोड की तर्ज कहते हैं Warpzit उत्तम जवाब है कि निंदा और नए एपीआई के बारे में संकलक चेतावनी को दबाने के लिए आवश्यक हैं।

यह आप अभी भी 11 एपीआई की तुलना में कम उपकरणों का समर्थन करने की अनुमति देता है।

@SuppressLint("NewApi")
@SuppressWarnings("deprecation")
private void 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("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);
    }
}

चिपकाएं

मैं एक बोनस के रूप में इस कोड जोड़ रहा है, क्योंकि कॉपी / पेस्ट आमतौर पर जोड़े में किया जाता है।

@SuppressLint("NewApi")
@SuppressWarnings("deprecation")
public void pasteText() {

    int sdk = android.os.Build.VERSION.SDK_INT;
    CharSequence pasteString = "";
    if (sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
        android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        try {
            pasteString = clipboard.getText();
        } catch (Exception e) {
            e.printStackTrace();
        }
    } else {
        android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        if (clipboard.getPrimaryClip() != null) {
            android.content.ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0);
            pasteString = item.getText();
        }
    }

    if (pasteString != null) {
        // use it
    }
}
28/11/2016 को 04:40
का स्रोत उपयोगकर्ता

वोट
2

@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;
18/04/2017 को 21:26
का स्रोत उपयोगकर्ता

वोट
2
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
ClipData clip = ClipData.newPlainText("label", "Text to copy");
clipboard.setPrimaryClip(clip);

और आयात import android.content.ClipboardManager;

12/12/2018 को 06:55
का स्रोत उपयोगकर्ता

वोट
0

यहाँ मेरे कार्य कोड है

/**
 * 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);

    }
}
25/02/2020 को 10:01
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more