Что такое точно параметр “маркировки” в ClipData в Android?

Согласно документации Android, ClipData используют "маркировку" как своего рода представление скопированным данным.

ClippedData является составным типом, содержащим один или экземпляры Объекта, каждый из которых может содержать одно или несколько представлений объекта данных. Для дисплея пользователю это также имеет маркировку и графическое представление.

И затем это далее объясняет "маркировку" как видимую Пользователем маркировку для данных клипа в некоторых документах API. Однако я все еще смущен использованием маркировки.

Как эта маркировка видима пользователям? Как я должен использовать его? Что я должен установить для этой маркировки, когда я называю метод фабрики ClipData newPlainText(CharSequence label, CharSequence text)? например:

private void copyToClipBoard() {

    ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
    ClipData clip = ClipData.newPlainText(
            "text label", // What should I set for this "label"?
            "content to be copied");
    clipboard.setPrimaryClip(clip);
    Toast.makeText(AboutActivity.this, "Saved to clip board", Toast.LENGTH_SHORT).show();
}

57
задан 28 June 2019 в 11:50

1 ответ

Сегодня при работе над моим приложением я обнаружил один вариант использования для маркировки ClipData. Некоторые приложения устанавливают его в NULL, в то время как другие приложения используют его в значительной степени.

В случае моего приложения я слушаю ClipManager addPrimaryClipChangedListener

, я делаю это в классе обслуживания, который работает в фоновом режиме почти все время. Я хочу рассматривать данные, добавленные к primaryClip из моего приложения, отличающегося от данных, добавленных в другом приложении (позволяет, говорят что текст, скопированный в веб-браузере).

Вот извлечение моего кода и как я использую маркировку ClipData:

mClipBoardManager.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
            @Override
            public void onPrimaryClipChanged() {
                String clipLabel = "default";
                if (mClipBoardManager.getPrimaryClip().getDescription().getLabel() != null) {
                    clipLabel = mClipBoardManager.getPrimaryClip().getDescription().getLabel().toString();
                }
                if (clipLabel.equals("auto_copy_text")) {
                    //TODO: Text from my app do stuffs you will do with text from my app
                } else {
                    //TODO: Text from some other app
                }

            }
        });

В моем приложении, когда я добавляю данные к primaryClip, я включаю маркировку как это:

private void addToClipboard(String text) {
        mClipboardManager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
        mClipboardManager.setPrimaryClip(ClipData.newPlainText("auto_copy_text", text));
    }

я надеюсь, что это помогает

1
ответ дан 1 November 2019 в 17:01

Другие вопросы по тегам:

Похожие вопросы: