Estou criando um aplicativo Android e quero copiar o valor do texto de um widget EditText. É possível que o usuário pressione Menu+A
e Menu+C
copie o valor, mas como eu faria isso programaticamente?
android
menu
clipboardmanager
Zach
fonte
fonte
Respostas:
Use o
ClipboardManager#setPrimaryClip
método:ClipboardManager
Referência da APIfonte
import android.content.ClipboardManager;
label
?Context context = getApplicationContext(); Toast.makeText(context, "text copied", Toast.LENGTH_LONG).show();
Portanto, todos concordam em como isso deve ser feito, mas como ninguém quer dar uma solução completa, aqui vai:
Suponho que você tenha algo como o seguinte declarado em manifesto:
fonte
label
nonewPlainText
método? a documentação afirmalabel User-visible label for the clip data.
. Mas quando élabel
visível para o usuário? E que tipo de valor / nome devo colocarlabel
?A pesquisa no Google leva você para android.content.ClipboardManager e você pode decidir, como eu, que a área de transferência não está disponível na API <11, porque a página da documentação diz "Desde: API Nível 11".
Na verdade, existem duas classes, a segunda estendendo a primeira - android.text.ClipboardManager e android.content.ClipboardManager.
android.text.ClipboardManager existe desde a API 1, mas funciona apenas com conteúdo de texto.
android.content.ClipboardManager é a maneira preferida de trabalhar com a área de transferência, mas não está disponível no nível de API <11 (Honeycomb).
Para obter qualquer um deles, você precisa do seguinte código:
Mas para a API <11, você precisa importar
android.text.ClipboardManager
e para a API> = 11android.content.ClipboardManager
fonte
você pode tentar isso ..
fonte
Aqui está um código para implementar algumas funções de copiar e colar do EditText (graças ao Warpzit para verificação da versão). Você pode conectá-los ao evento onclick do seu botão.
fonte
Atualização da biblioteca de suporte do Android
No Android Oreo, a biblioteca de suporte apenas desce para a API 14. A maioria dos aplicativos mais novos provavelmente também possui uma API mínima de 14 e, portanto, não precisa se preocupar com os problemas com a API 11 mencionados em algumas das outras respostas. Muito do código pode ser limpo. (Mas veja meu histórico de edições, se você ainda suporta versões inferiores.)
cópia de
Colar
Estou adicionando esse código como um bônus, porque copiar / colar geralmente é feito em pares.
Notas
android.content.ClipboardManager
versão em vez da antigaandroid.text.ClipboardManager
. O mesmo paraClipData
.context.getSystemService()
.null
. Você pode verificar cada um se achar mais legível.fonte
Para habilitar a copiar / colar padrão para o TextView, U pode escolher um dos seguintes:
Alteração no arquivo de layout: adicione a propriedade abaixo ao seu TextView
Na sua classe Java, escreva esta linha dois, defina gramaticalmente.
myTextView.setTextIsSelectable(true);
E pressione e segure o TextView para ver a barra de ação copiar / colar.
fonte
E importar
import android.content.ClipboardManager;
fonte
O @FlySwat já deu a resposta correta, estou apenas compartilhando a resposta completa:
Use o método ClipboardManager.setPrimaryClip ( http://developer.android.com/reference/android/content/ClipboardManager.html ):
Onde
label
está um rótulo visível pelo usuário para os dados do clipe etext
é o texto real no clipe. De acordo com documentos oficiais .É importante usar esta importação:
fonte
Aqui está o meu código de trabalho
fonte
Para o Kotlin, podemos usar o seguinte método. Você pode colar esse método dentro de uma atividade ou fragmento.
fonte
context.
era a parte que estava faltando - poderia ser porque eu estou fazendo isso dentro de um fragmento.