Работа с устаревшим android.text.ClipboardManager

android.text.ClipboardManager устарел с уровня API 11 и заменен на android.content.ClipboardManager ( source ).

Как написать код, поддерживающий оба случая? Импортирует android.content.ClipboardManager и использует это в 11+, но сила закрывается в 10. Изменение импорта в android.text.ClipboardManager выдает кучу предупреждений об устаревании в 11+.

Как я могу обрабатывать оба случая плавно? Что мне нужно импортировать?

В итоге я просто использовал старый способ (android.text.ClipboardManager и код из этого ответа ), а также пару аннотаций @SuppressWarnings («устаревание»).

Явное:

  @SuppressWarnings("deprecation") android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(CLIPBOARD_SERVICE); clipboard.setText(shareViaSMSBody); 

Поскольку это должно продолжать работать с более старыми устройствами, вполне вероятно, что устаревший код не будет удален с Android.

Ссылаясь на этот ответ :

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { final android.content.ClipboardManager clipboardManager = (android.content.ClipboardManager) context .getSystemService(Context.CLIPBOARD_SERVICE); final android.content.ClipData clipData = android.content.ClipData .newPlainText("text label", "text to clip"); clipboardManager.setPrimaryClip(clipData); } else { final android.text.ClipboardManager clipboardManager = (android.text.ClipboardManager) context .getSystemService(Context.CLIPBOARD_SERVICE); clipboardManager.setText("text to clip"); } 

Если вы все еще поддерживаете <SDK 11, вы делаете слишком много работы. Установите min до 15 и используйте этот код:

  ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); ClipData clip = ClipData.newPlainText("label for text", "text to copy"); clipboard.setPrimaryClip(clip);