Ci sono due parti in questo: il meccanismo per le app di comunicazione per dire che possono condividere cose e il meccanismo per le app con contenuti da condividere. Mi occuperò di loro uno alla volta, ma prima una breve nota sugli intenti .
intenti
L' intento in Android è quello che viene utilizzato per avviare un'app. Può funzionare come un collegamento o come un'associazione di file di Windows. L'intento può specificare il nome dell'app da avviare, ma non è necessario. Può anche specificare l'azione da eseguire (ad es. "Apri la tua attività principale", "visualizza questo URL", "crea una voce del calendario") e il tipo MIME dell'oggetto su cui agirà (ad es. Quella cosa che vuoi vedere ha tipo immagine / jpeg). Alcuni nomi di azioni sono specifici di una particolare app, ma molti sono standardizzati da Android per consentire alle app di interagire.
Filtri di intenti e app di comunicazione
Ogni app specifica i filtri di intenti per dire che tipo di azioni può eseguire. ad esempio un'app visualizzatore di immagini registra un filtro di intenti per "visualizza questo URL" in cui il tipo MIME è "image / *"; un browser Web registra un filtro di intenti per "visualizza questo URL" in cui lo schema URL è "http" o "https". Per poter condividere cose, un'app registra un filtro di intenti per l'intenzione di "invio", sia con un tipo specifico (ad esempio se può solo condividere foto), sia per qualsiasi tipo.
App di contenuti
L'app che desidera condividere alcuni contenuti crea un intento con l'azione "condividi" e un URL che punta al contenuto da condividere. (Questo è spesso un URL "temporaneo" che consente all'app di ricezione di accedere temporaneamente al file nella memoria privata dell'app di contenuto o a uno stream generato dall'app di contenuto.) Non specifica il nome di un'app per gestire intento. Poi, dà che l'intento del quadro Android e chiede Android per visualizzare la Scelta finestra di dialogo. Android confronta l'intento con i filtri di intento di tutte le app installate, crea l'elenco e lo mostra all'utente. Quando l'utente sceglie una particolare app, Android avvia quell'app e le passa l'intento. L'app utilizza l'URL per ottenere il contenuto dall'app originale.
Novità di Marshmallow: condivisione diretta
In Marshmallow, c'è un altro meccanismo chiamato Direct Share . Ciò integra il meccanismo di intenti in modo che tu possa scegliere persone o gruppi con cui condividere direttamente dalla finestra di dialogo di selezione, saltando il passaggio aggiuntivo di "a chi vorresti inviarlo". Funziona in modo leggermente diverso: l'app di comunicazione deve fornire un servizio. Quando l'app con il contenuto richiede un selettore, Android avvia il servizio per ogni app pertinente. Il servizio restituisce un elenco di target di condivisione pertinenti e Android assembla tutti quegli elenchi separati nell'elenco che viene mostrato nella finestra di dialogo.