TextView でコピーペーストを有効にしたい。
Android ドキュメントでこれらの非常に優れた説明を見つけました: http://developer.android.com/guide/topics/clipboard/copy-paste.html
しかし、それはバージョン 11 からのみ動作します - ハニカム!
この時点で大多数のユーザーにも機能するものが必要です。つまり、ジンジャーブレッド、フロヨ、エクレアにも機能する必要があります。
何を使う?
TextView でコピーペーストを有効にしたい。
Android ドキュメントでこれらの非常に優れた説明を見つけました: http://developer.android.com/guide/topics/clipboard/copy-paste.html
しかし、それはバージョン 11 からのみ動作します - ハニカム!
この時点で大多数のユーザーにも機能するものが必要です。つまり、ジンジャーブレッド、フロヨ、エクレアにも機能する必要があります。
何を使う?
パッケージClipboardManager
にあるものを使用してください。android.text
テキスト以外のもののクリッピングのサポートを開始したため、別のパッケージに移動しましたが、下位互換性のために古い名前で引き続き使用できます。
あなたはまだ次のようなもので終わります:
ClipboardManager cm=(ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
cm.setText("something");
これを示すサンプル プロジェクトを次に示します。
これらは、Android でプレーン テキストをクリップボードにコピーし、クリップボードからプレーン テキストを貼り付けるための、完全にクロスプラットフォームで例外のない方法です。
@SuppressLint("NewApi") @SuppressWarnings("deprecation")
public void copy(String plainText)
{
if (android.os.Build.VERSION.SDK_INT < 11)
{
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
if (clipboard != null)
{
clipboard.setText(plainText);
}
}
else
{
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
if (clipboard != null)
{
android.content.ClipData clip = android.content.ClipData.newPlainText("text", plainText);
clipboard.setPrimaryClip(clip);
}
}
}
@SuppressLint("NewApi") @SuppressWarnings("deprecation")
public String paste()
{
if (android.os.Build.VERSION.SDK_INT < 11)
{
android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
if (clipboard != null)
{
return (String) clipboard.getText();
}
}
else
{
android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
if (clipboard != null && clipboard.getPrimaryClip() != null && clipboard.getPrimaryClip().getItemCount() > 0)
{
return (String) clipboard.getPrimaryClip().getItemAt(0).getText();
}
}
return null;
}