Вы задали два различных вопроса здесь. Сервисные требования не связаны с API-функциями.
Android в целом чрезмерно агрессивен о маркировке ПЧЕЛЫ, как удерживается от использования. В этом случае это только означает, что есть новые функции с большей функциональностью. Функциональность getText()
, hasText()
и setText()
все еще существует, и те функции продолжат работать, но они теперь осуществляются как тривиальные обертки вокруг более новых функций.
Насколько сервисные требования идут, те - внутренняя деталь внедрения и как вы заметили, как, гарантируют, не будут работать через версии Android. Если вы всматриваетесь в Android исходный код, вы будете в настоящее время считать эти сделки определяемыми:
TRANSACTION_setPrimaryClip = 1
TRANSACTION_getPrimaryClip = 2
TRANSACTION_getPrimaryClipDescription = 3
TRANSACTION_hasPrimaryClip = 4
TRANSACTION_addPrimaryClipChangedListener = 5
TRANSACTION_removePrimaryClipChangedListener = 6
TRANSACTION_hasClipboardText = 7
Исходный код также указывает на то, каких параметров эти сделки требуют. К сожалению, TRANSACTION_setPrimaryClip требует ClipData
, который не является i32 или s16 и таким образом не совместим с сервисное требование
. У нас есть большие проблемы, чем это, однако; эти сделки требуют имени пакета запроса в качестве параметра, и обслуживание клипборда утверждает это, указанное имя пакета соответствует запросу uid. Используя раковину adb, запрос uid является или UID_ROOT или UID_SHELL, ни один из которых не владеет никакими пакетами, таким образом, нет никакого способа передать ту проверку. Проще говоря, новое обслуживание клипборда не может использоваться этот путь.
Что можно сделать обо всем этом? Можно создать собственное обслуживание для управления клипбордом от командной строки и установить его на устройство. Я не знаю, есть ли какой-либо способ простираться сервисное требование
, но можно использовать , startservice
как подходящая замена. Если вы создали и установили то таможенное обслуживание клипборда, то вы могли призвать его как:
am startservice -a MySetClipboard -e text "clipboard text"
Кодекс, чтобы осуществить это обслуживание мог быть похожим на это:
public MyService extends Service {
public int onStartCommand(Intent intent, int flags, int startId) {
String text = intent.getStringExtra("text");
ClipboardManager.setText(text);
stopSelf();
return START_NOT_STICKY;
}
}
У обслуживания должен быть поглощенный фильтр, который объявляет его способным к обработке MySetClipboard
поглощенное действие.