Як додатки Android реалізують кнопку спільного доступу?


11

Мені було цікаво, як Android-програми та Android реалізують кнопку спільного використання та механізм спільного використання. Наприклад, коли я натискаю кнопку спільного доступу на YouTube, з'являється список програм, якими можна поділитися, щоб вискакувати. Як визначається цей список? Чи є певний намір "поділитися", і тоді з’являться всі плями, здатні ділитися типом наміру, наданим у додатках для намірів? Як називається технічна назва шаблону дизайну, який використовується для цього? Спасибі.


1
Ви насправді мали на увазі "poops", чи це помилка для "pops"? Принаймні, в американській англійській мові перше - це те, що малюки роблять до памперсів.
JDługosz

Ти маєш рацію. Нещодавно я перейшов на клавіатуру Swype на Android, яка дозволяє мені набирати швидше, але іноді вона вводить неправильне слово, і я не помічаю. Не впевнений, що з цим робити, я не дуже обережна людина. Іноді в підмосков'ї і навіть не вдається переглядати екран належним чином.
Джек Мадінгтон

У підводний човен (підводний човен ?!)! Що робити: коректура перед подачею. І не забруднюйте свій список прогнозів бентежними словами.
JDługosz

Випадково мій список прогнозів заповнений матеріалами зі старих електронних листів, які Swype читає автоматично. Yikes!
Джек Медінгтон

Відповіді:


10

До цього відносяться дві частини: механізм, що дозволяє комунікаційним програмам говорити, що вони можуть ділитися речами, і механізм для додатків із вмістом для спільного доступу. Я розберуся з ними по черзі, але спочатку швидка примітка про наміри .

Інтенції

Намір в Android є те , що використовується для запуску програми. Це може працювати як ярлик або як асоціація файлів Windows. У намірі можна вказати назву програми, яку потрібно запустити, але це не обов'язково. Він також може вказати дію, яку потрібно виконати (наприклад, "відкрити основну діяльність", "переглянути цю URL-адресу", "створити запис у календарі") та тип MIME об'єкта, на який він буде діяти (наприклад, те, що потрібно переглянути має тип зображення / jpeg). Деякі назви дій притаманні певній програмі, але багато людей стандартизовані Android, щоб програма могла взаємодіяти.

Фільтри намірів і додаток для зв’язку

Кожен додаток задає фільтри намірів, щоб сказати, які дії він може виконувати. наприклад, програма перегляду зображень реєструє фільтр намірів для "перегляду цієї URL-адреси", де тип MIME - "image / *"; веб-браузер зареєструє фільтр намірів для "перегляду цієї URL-адреси", де схемою URL є "http" або "https". Щоб мати змогу поділитися речами, додаток реєструє фільтр намірів для наміру "надіслати" або з певним типом (наприклад, якщо він може ділитися лише фотографіями), або будь-якого типу.

Додаток для вмісту

Додаток, який хоче поділитися певним вмістом, створює наміри дії "поділитися" та URL-адресу, що вказує на вміст, яким потрібно поділитися. (Це часто "тимчасова" URL-адреса, яка надає додатку, що отримує тимчасовий доступ до файлу в приватному сховищі додатка вмісту або до потоку, створеного програмою вмісту.) У ньому не вказано ім'я програми для обробки умисел. Потім він надає цю мету рамці Android і просить Android відобразити діалогове вікно вибору . Android порівнює наміри з фільтрами намірів з усіх встановлених додатків, створює список і показує його користувачеві. Коли користувач вибирає певний додаток, Android запускає цей додаток і передає йому наміри. Додаток використовує URL для отримання вмісту з оригінального додатка.

Нове в зефірі: Пряма частка

У Marshmallow є ще один механізм, який називається Direct Share . Це доповнює механізм намірів, щоб ви могли обирати людей чи групи, до яких можна поділитися безпосередньо з діалогового вікна вибору, пропускаючи додатковий крок "кому ви хотіли б надіслати його". Це працює трохи інакше: додаток для зв’язку має надавати послугу. Коли додаток із вмістом запитує вибір, Android запускає сервіс для кожного відповідного додатка. Сервіс повертає список відповідних цілей спільного доступу , а Android збирає всі ці окремі списки до списку, який відображається у діалоговому вікні.


Але я бачив, що програми показують досить багато різних діалогів вибору. Чи всі вони дійсно відображаються ОС або може сама програма отримати список цілей?
користувач1686

@grawity У вбудованому діалоговому вікні є кілька параметрів налаштування (наприклад, для встановлення заголовка), але програма також може запитувати в Android список цілей спільного доступу та розмістити їх у своєму діалоговому вікні. Мій вибір вибору браузера bURLy - приклад цього, але з наміром "відкрити URL" замість наміру "надіслати".
Дан Хулм

11

Я не розвідник, тому я просто можу дати необґрунтоване пояснення: програми заявляють у своїх ManifestMimetypes, які вони розуміють та готові відповісти на акції спільного використання. Для цього вони визначають так звані "фільтри намірів", наприклад:

<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT"/>
    <data android:mimeType="application/*" />
    <data android:mimeType="audio/*" />
    <data android:mimeType="image/*" />
    <data android:mimeType="message/*" />
    <data android:mimeType="multipart/*" />
    <data android:mimeType="text/*" />
    <data android:mimeType="video/*" />
</intent-filter>

Отже, кожного разу, коли ви натискаєте кнопку "поділитися", вміст для спільного використання оцінюється і співпадає з додатками, які заявили про готовність отримати формат.

Джерела:


1
Це в значній мірі це безпосередньо. Додаток (здійснюючи спільний доступ) може фільтрувати деяких респондентів, які не мають наміру, але більшість - ні.
coteyr

2
@HiltonShumway, тому я підтримав його відповідь. Окрім мене, Дан вписується в розвиток і набагато краще знає, як все йде разом. Тож, коли я опублікував свою відповідь, я сподівався, що він також опублікує її - він не розчарував моєї надії :)
Izzy
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.