Nella mia app ho una voce di menu che voglio aprire il lettore multimediale preferito dell'utente, interessato solo all'audio. Idealmente, la prima volta che l'utente sceglie questo elemento, sceglierebbe l'unico lettore multimediale sul telefono se ne ha solo uno installato o presentandoli con una lista se ne ha più di uno. Vorrei quindi salvare la loro scelta, così la prossima volta l'aprirà.Come ottenere un elenco di lettori multimediali installati
Come ho capito, Android non ha un lettore multimediale predefinito. Ho il Droid originale e ha un lettore multimediale, ma capisco che altri operatori usano il proprio, o l'utente può disinstallare quello standard.
Ho provato alcune cose ma non riesco a far funzionare nulla.
Ho provato questo codice, che dovrebbe ottenere un elenco di pacchetti che supportano l'intento. Funziona per alcune cose come "application/pdf" e "video/*". Quando provo con "audio/*" ottengo una lista vuota, anche se ho installato sia il lettore multimediale Android che MixZing. Ho anche provato con "media/*" e non ottenere nulla.
PackageManager packageManager = getPackageManager();
Intent testIntent = new Intent(Intent.ACTION_VIEW);
testIntent.setType("audio/*");
List list = packageManager.queryIntentActivities(testIntent, 0);
Ho visto questo codice che funziona e apre un file audio con il lettore predefinito, però io non voglio aprire un file, voglio solo aprire l'applicazione audio come se l'utente ha aperto dal cassetto delle applicazioni.
Intent i = new Intent(Intent.ACTION_VIEW);
Uri u = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI,"1");
i.setData(u);
startActivity(i);
L'unica altra cosa che posso pensare di fare è uscire e ottenere i nomi dei pacchetti dei più popolari lettori multimediali e difficile loro codice e cercare il telefono per vedere quali sono installati, ma questo doesn' t mi sembra l'approccio migliore. Non capisco perché il primo bit di codice non funzioni. Forse i filtri intent non sono impostati correttamente per quelle app o sto usando il codice sbagliato oi tipi mime.
La seconda parte di codice fa esattamente quello che voglio quando viene avviata l'attività. Mi presenta un elenco di app sul mio telefono in grado di gestire l'intento. Non riesco proprio a trovare un modo per generare quella lista da solo, così posso manipolare le cose. Non voglio iniziare l'attività, ma solo ottenere i dati che il sistema operativo utilizza per generare quell'elenco. – Bob
OK Penso di averlo funzionante. Pubblicherò la soluzione quando l'avrò. – Bob
Questo potrebbe funzionare anche per te: http://stackoverflow.com/questions/18161237/list-installed-media-players-android/21658150#21658150 – yado