In che modo le app Android implementano il pulsante di condivisione?


11

Mi chiedevo come le applicazioni Android e Android implementano il pulsante di condivisione e il meccanismo di condivisione. Ad esempio, quando premo il pulsante di condivisione su YouTube, viene visualizzato un elenco di app da condividere. Come viene determinato questo elenco? Esiste un intento di "condivisione" specifico, quindi vengono visualizzati tutti gli spot in grado di condividere il tipo di intento fornito negli extra di intento? Qual è il nome tecnico del modello di progettazione utilizzato per implementarlo? Grazie.


1
Intendevi davvero "poops" o è un refuso per "pops"? Almeno nell'inglese americano, il primo è ciò che i bambini fanno ai loro pannolini.
JDługosz,

Hai ragione. Di recente sono passato alla tastiera Swype su Android che mi permette di digitare più velocemente, ma a volte inserisce la parola sbagliata per e non me ne accorgo. Non sono ancora sicuro di cosa fare al riguardo, non sono una persona molto attenta. A volte entra nel sottotitolo e non riesce nemmeno a vedere correttamente lo schermo.
Jack Maddington,

Nel sottomarino (sottomarino?)! Cosa fare: correzione prima di inviare. E non inquinare il tuo elenco di previsioni con parole imbarazzanti.
JDługosz,

Per coincidenza, il mio elenco di previsioni è pieno di materiale proveniente da vecchie e-mail, che Swype legge automaticamente. Yikes!
Jack Maddington,

Risposte:


10

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.


Tuttavia, ho visto le app mostrare diverse finestre di dialogo di selezione. Sono tutti realmente visualizzati dal sistema operativo o l'app stessa può ottenere un elenco di target?
user1686

@grawity La finestra di dialogo integrata ha alcune opzioni di personalizzazione (ad esempio per impostare il titolo), ma è anche possibile per l'app chiedere ad Android l'elenco degli obiettivi di condivisione e inserirli nella propria finestra di dialogo. Il mio selettore di browser BURLy ne è un esempio, ma con l'intento "URL aperto" anziché "invia".
Dan Hulme,

11

Non sono uno sviluppatore, quindi posso solo dare una spiegazione semplice: le app dichiarano nei loro ManifestMimetypes che comprendono e sono disposte a rispondere su azioni condivise. Per questo definiscono i cosiddetti "filtri di intenti", ad esempio:

<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>

Pertanto, ogni volta che si preme il pulsante "condividi", il contenuto da condividere viene valutato e confrontato con le app che hanno dichiarato la propria disponibilità a ricevere il formato.

fonti:


1
È praticamente tutto direttamente. L'app (eseguendo la condivisione) è autonomamente in grado di filtrare alcuni degli intervistati intenzionali, ma la maggior parte no.
Coteyr,

2
@HiltonShumway ecco perché ho votato a favore della sua risposta. Oltre a me, Dan è in forma nello sviluppo e sa molto meglio come vanno le cose insieme. Quindi, quando ho pubblicato la mia risposta, speravo che ne pubblicasse anche una - non ha deluso la mia speranza :)
Izzy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.