Текст клипборда набора через adb обстреливает с уровня API 11

Перед уровнем API 11 было возможно установить содержание клипборда при помощи обслуживание программа на adb раковина :

service call SERVICE CODE [i32 INT | s16 STR] ...
Options:
    i32: Write the integer INT into the send parcel.
    s16: Write the UTF-16 string STR into the send parcel.

Было три кода целого числа, чтобы определить методы:

1 TRANSACTION_getClipboardText
2 TRANSACTION_setClipboardText
3 TRANSACTION_hasClipboardText

Например, эта команда

$ adb shell service call clipboard 2 i32 1 i32 1 s16 "Hello Android!"

установите содержание клипборда "Привет Android!" . С уровня API 11 перечисленные методы устаревший и новые берут ClipData как аргумент. Как вы устанавливаете содержание клипборда теперь с помощью adb раковина ?

16
nl ja de

1 ответы

Вы задали два различных вопроса здесь. Сервисные требования не связаны с 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 поглощенное действие.

9
добавлено
Это возможный восстановить содержание клипборда неочевидным способом. Сначала определите идентификатор пользователя (смотря в / data/ data/ или adb PS раковины | grep moz ), и затем используют su , чтобы изменить пользователя: adb обстреливает сервисный su u0_a99 клипборд требования 2 s16 org.mozilla.firefox_beta . Это возвращает ужасный Пакет (со следами UTF-16?). Я не попытался установить что-то все же по причинам, которые вы упомянули.
добавлено автор Lekensteyn, источник
that' s положительная сторона - если у вас есть доступ корня на устройстве, вы можете двигаться, проблема uid, используя su . но да, there' s все еще никакой способ построить ClipData использование сервисное требование команда. любой заинтересовал этим, более обеспеченная установка их собственного обслуживания и призыв это вместо этого. it' s тривиальный, как свидетельствуется тем, что я написал тот, отвечая на вопрос и включал источник.
добавлено автор j__m, источник
I' ve создал такое обслуживание и с тех пор it' s работающий хорошо I' ve помещают его на GitHub, чтобы быть доступными другим: github.com/micer/clipboard-service.
добавлено автор Micer, источник
Mobile Dev Jobs — вакансии и аналитика
Mobile Dev Jobs — вакансии и аналитика
6 187 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению iOS, Android, Xamarin и т.д. ВАЖНО: Правила публикации и правила канала: Ссылка – https://telegra.ph/Pravila-oformleniya-vakansij-i-rezyume-11-09-2

Android Developers
Android Developers
4 476 участник(ов)

Общаемся на темы, посвященным Android-разработке, SDK, Kotlin, Realm и т.д.

Android Architecture
Android Architecture
2 186 участник(ов)

Русскоязычный чат по архитектуре в андроид приложениях. Подробнее: http://telegra.ph/Android-Architecture-12-24

rus-speaking/android
rus-speaking/android
1 705 участник(ов)

Основной чат по Android разработке (вопрос-ответ). ПРАВИЛА: bit.ly/andr-rules. NEWS: bit.ly/AnrdResId ЧАТЫ: Основной: bit.ly/andr-main IDE, сборка, Git, сервисы: bit.ly/andr-tools Оффтоп: bit.ly/andr-offtop Конференции, события: bit.ly/andr-events Вакансии, найм: bit.ly/andr-job Архитектура: bit.ly/andr-patterns Rx: bit.ly/andr-rx Тестирование: bit.ly/andr-test Kotlin: bit.ly/andr-kotlin Хаmarin: bit.ly/andr-xamarin За мат, спам, агрессию, предложения о работе, оффтоп в этом канале - бан на сутки и более ☢☢☢

Android Dev Подкаст
Android Dev Подкаст
1 325 участник(ов)

Комната для обсуждения Android Dev подкаста apptractor.ru/AndroidDev/ Общее обсуждение Android: https://t.me/android_ru Остальные чаты про Android: http://t.me/devChats Наши новости https://t.me/androiddevpodcast_news

Android Guards
Android Guards
602 участник(ов)

Обсуждение любых вопросов касающихся безопасности Android. - Защита системы и приложений - Уязвимости и эксплойты - Вредоносное ПО - Копание в кишках системы и приложений (RE)

Android JOB
Android JOB
466 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению Android (full-time, part-time, remote и разовые подработки)

AndroidDev :: Разработка. It's Android time now!
AndroidDev :: Разработка. It's Android time now!
458 участник(ов)

It's Android time now! Чат разработчиков Android. Вакансии, резюме и информацию о митапах размещать можно. Публикацию скрытой и явной рекламы ваших каналов и сайтов после получения разрешения от @olegushakov

Aandroid Talks!
Aandroid Talks!
212 участник(ов)

Чат об общих вопросах по ОС Android. Чат для разработки под андроид - pro.android: https://t.me/joinchat/AAAAAEKIFKnmRT9cMebb9w

Android Rus
Android Rus
68 участник(ов)