C'è un modo di utilizzare intent.setType()
e fornire più tipi di dati generici (come immagini e)?Più tipi MIME in Android
Sto usando un ACTION_GET_CONTENT
. Sembra che funzioni con solo tipi separati da virgole.
C'è un modo di utilizzare intent.setType()
e fornire più tipi di dati generici (come immagini e)?Più tipi MIME in Android
Sto usando un ACTION_GET_CONTENT
. Sembra che funzioni con solo tipi separati da virgole.
Spiacenti, questo non è attualmente supportato. Avete due opzioni:
(1) Utilizzare un tipo MIME di */*
e accettare che ci possano essere alcune cose che l'utente può scegliere che non sarà in grado di gestire (e avere un percorso di recupero decente per quello); oppure
(2) Implementare il proprio selettore di attività, effettuare chiamate dirette sul gestore pacchetti per ottenere le attività che possono gestire entrambi i tipi MIME per l'intento, unire tali elenchi e visualizzarli all'utente.
Inoltre, setType()
non funziona affatto con i tipi separati da virgole. Deve essere uno e un solo tipo MIME.
In realtà, sono supportati più tipi mime. L'hai mai provato ??? Ad esempio: image/*, video/* mostrerà foto e video ... – vchelbanster
In realtà, sono supportati più tipi di mime. L'hai mai provato ???
Ad esempio: intent.setType("image/*,video/*")
visualizzerà foto e video ...
Per me funziona. Dovrebbe funzionare anche per te ...
Questa soluzione funziona ... ma solo con applicazioni che consentono due tipi di mime. L'impostazione predefinita "Galleria" no. – Corbella
In realtà, dipende dall'applicazione "Galleria" installata. Ci sono diverse versioni di loro distribuite con diverse ROM Android. – vchelbanster
Funziona per me solo in casi minori. Le stesse immagini potrebbero o potrebbero non essere selezionabili. Android 5.0.1 – Ingweland
per il mio lavoro con punto e virgola.
Esempio:
intent.setType("image/*;video/*")
o
sIntent.putExtra("CONTENT_TYPE", "image/*;video/*");
In Android 4.4 quando si utilizza il Storage Access Framework è possibile utilizzare il EXTRA_MIME_TYPES
passare più tipi MIME.
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
String[] mimetypes = {"image/*", "video/*"};
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
startActivityForResult(intent, REQUEST_CODE_OPEN);
Questo è perfetto. –
Questo non funziona in Android 7.0. Mostra solo video. – clocksmith
@clocksmith Sembra funzionare bene sul mio Nexus 9 con Android 7.0. –
è possibile passare più tipi di mime se si separa con |
Intent.setType("application/*|text/*");
Per me quello che ha funzionato meglio doveva:
intent.setType("*/*");
intent.addCategory(Intent.CATEGORY_OPENABLE);
È possibile aggiungere diversi tipi MIME come questo
intent.setType("image/*|application/pdf|audio/*");
Ma Scelta intento sarà solo le applicazioni di visualizzazione che può gestire le immagini perché è il primo nella stringa del tipo mime.
Tuttavia, se è installato un gestore di file (ho provato con il file manager CyanogenMod) è possibile scegliere un file audio o pdf o un'immagine.
Se il tipo MIME audio è il primo, in questo modo:
intent.setType("audio/*|image/*|application/pdf");
Il selettore intento mostrerà solo le applicazioni che gestiscono l'audio.
Sempre utilizzando il file manager è possibile selezionare un'immagine o pdf o audio.
Potrebbe essere più specifico. setType() su ... cosa? Per quale uso e scopo? Etc. – CommonsWare
Hai già trovato un modo per farlo? –