Bir Android uygulaması oluşturuyorum ve bir EditText widget'ının metin değerini kopyalamak istiyorum. Basına kullanıcı olması mümkündür Menu+A
ardından Menu+C
değerini kopyalamak için, ama ben programlı bunu nasıl?
Bir Android uygulaması oluşturuyorum ve bir EditText widget'ının metin değerini kopyalamak istiyorum. Basına kullanıcı olması mümkündür Menu+A
ardından Menu+C
değerini kopyalamak için, ama ben programlı bunu nasıl?
Yanıtlar:
ClipboardManager#setPrimaryClip
Yöntemi kullanın :
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();
Herkes bunun nasıl yapılması gerektiğine katılıyor, ancak kimse tam bir çözüm vermek istemediğinden, işte gidiyor:
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'te aşağıdaki gibi bir şeyiniz olduğunu varsayıyorum:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="14" />
label
içinde newPlainText
yöntemle? belgesel diyor label User-visible label for the clip data.
. Ancak kullanıcı ne zaman label
görünür? Ve ne tür bir değer / isim girmeliyim label
?
Googling sizi android.content.ClipboardManager'a getiriyor ve benim yaptığım gibi Pano'nun API <11'de kullanılamayacağına karar verebilirsiniz, çünkü dokümantasyon sayfasında "Başlangıç: API Seviye 11" yazıyor.
Aslında iki sınıf var, ikincisi ilkini genişletiyor - android.text.ClipboardManager ve android.content.ClipboardManager.
android.text.ClipboardManager API 1'den beri var, ancak yalnızca metin içeriğiyle çalışıyor.
android.content.ClipboardManager pano ile çalışmanın tercih edilen yoludur, ancak API Seviye <11'de (Honeycomb) kullanılamaz.
Bunlardan herhangi birini almak için aşağıdaki koda ihtiyacınız vardır:
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
Ancak API <11 için içe aktarmanız android.text.ClipboardManager
ve API için> = 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());
}
bunu deneyebilirsiniz ..
EditText'ten bazı kopyala ve yapıştır işlevlerini uygulamak için bazı kodlar (sürüm kontrolü için Warpzit sayesinde). Bunları düğmenizin onclick etkinliğine bağlayabilirsiniz.
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'dan itibaren, destek kitaplığı yalnızca API 14'e kadar gider. Çoğu yeni uygulamanın muhtemelen 14 API'sı vardır ve bu nedenle diğer cevapların bazılarında bahsedilen API 11 ile ilgili sorunlar hakkında endişelenmenize gerek yoktur. Kodun çoğu temizlenebilir. (Yine de daha düşük sürümleri destekliyorsanız düzenleme geçmişime bakın.)
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", selectedText);
if (clipboard == null || clip == null) return;
clipboard.setPrimaryClip(clip);
Bu kodu bonus olarak ekliyorum çünkü kopyala / yapıştır genellikle çiftler halinde yapılıyor.
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
try {
CharSequence text = clipboard.getPrimaryClip().getItemAt(0).getText();
} catch (Exception e) {
return;
}
android.content.ClipboardManager
Eski yerine sürümü içe aktardığınızdan emin olun android.text.ClipboardManager
. Aynı ClipData
.context.getSystemService()
.null
. Eğer daha okunaklı bulursanız, her birini kontrol edebilirsiniz.TextView için standart kopyala / yapıştır özelliğini etkinleştirmek için U aşağıdakilerden birini seçebilir:
Düzen dosyasında değişiklik: TextView'inize aşağıdaki özelliği ekleyin
android:textIsSelectable="true"
Java sınıfınızda bu satırı iki dilbilgisi olarak yazın.
myTextView.setTextIsSelectable(true);
TextView üzerine uzun bastığınızda kopyalama / yapıştırma eylem çubuğunu görebilirsiniz.
@FlySwat zaten doğru cevabı verdi, ben sadece tam cevabı paylaşıyorum:
ClipboardManager.setPrimaryClip ( http://developer.android.com/reference/android/content/ClipboardManager.html ) yöntemini kullanın :
ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("label", "Text to copy");
clipboard.setPrimaryClip(clip);
label
Klip verileri için Kullanıcı tarafından görülebilir bir etiket nerede ve klipteki
text
gerçek metindir. Resmi belgelere göre .
Bu içe aktarmayı kullanmak önemlidir:
import android.content.ClipboardManager;
İşte benim çalışma kodum
/**
* 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);
}
}
Kotlin için aşağıdaki yöntemi kullanabiliriz. Bu yöntemi bir etkinliğin veya parçanın içine yapıştırabilirsiniz.
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.
Bir parçası içinde yapıyorum çünkü olabilir - Ben eksikti parçasıydı.