ClipboardManager.OnPrimaryClipChangedListener не вызывается после копирования текста из общего доступа на некоторых устр ⇐ Android

Форум для тех, кто программирует под Android
Anonymous
ClipboardManager.OnPrimaryClipChangedListener не вызывается после копирования текста из общего доступа на некоторых устр

Сообщение Anonymous »

Я работаю над приложением для Android, в котором использую намерение поделиться текстом. Если пользователь копирует текст вместо того, чтобы делиться им через приложение, я хочу определить, когда изменяется содержимое буфера обмена, с помощью ClipboardManager.OnPrimaryClipChangedListener.
Однако на некоторых устройствах обратный вызов onPrimaryClipChanged не работает. вызывается, когда текст копируется из намерения поделиться. Эта проблема возникает не на всех устройствах.
Вот соответствующий код:

Код: Выделить всё

private void setClipBoardManager() {
ClipboardManager clipboardManager = (ClipboardManager) getApplicationContext().getSystemService(Context.CLIPBOARD_SERVICE);
clipboardManager.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
@Override
public void onPrimaryClipChanged() {
try {
CharSequence copiedData = clipboardManager.getPrimaryClip().getItemAt(0).getText();
Log.d(TAG, "onPrimaryClipChanged: " + copiedData);
} catch (RuntimeException ex) {
Log.e(TAG, ex.getLocalizedMessage(), ex);
ex.printStackTrace();
}
}
});
}

Код: Выделить всё

public void share_text(String title, String subject, String text) {
int requestCode = 111;
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
sharingIntent.putExtra(Intent.EXTRA_TEXT, text);

PendingIntent pi = PendingIntent.getBroadcast(this, requestCode, new Intent(this, ShareBroadCast.class),
PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
sharingIntent = Intent.createChooser(sharingIntent, title, pi.getIntentSender());

startActivity(sharingIntent);
}

Я проверил, что менеджер буфера обмена правильно инициализирован.
onPrimaryClipChanged отлично работает и в других сценариях, не связанных с целью общего доступа.
Похоже, проблема зависит от устройства, но я не уверен, почему.
Я ожидал, что onPrimaryClipChanged будет срабатывать всякий раз, когда пользователь копирует текст из намерения поделиться на всех устройствах.

Подробнее здесь: https://stackoverflow.com/questions/793 ... -text-from

Вернуться в «Android»