Ho esaminato tutte le domande simili qui, ma non posso per la vita di me capire cosa sto facendo male.Avvio di un intento per il file e il tipo MIME?
Ho scritto un'applicazione che tenta di avviare vari file, una specie di browser di file. Quando si fa clic su un file, tenta di avviare il programma in base al tipo MIME associato o presenta la finestra di dialogo "Scegli applicazione da avviare".
Ecco il codice che sto usando per lanciare:
File file = new File(app.mediaPath() + "/" +_mediaFiles.get(position));
Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW);
String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
myIntent.setDataAndType(Uri.fromFile(file),mimetype);
startActivity(myIntent);
questo non riesce e genera l'errore:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=file:///file:/mnt/sdcard/roms/nes/Baseball_simulator.nes }
Ora, se installo OI File Manager per esempio, si apre al posto di questo viene generato un errore, quindi se faccio clic sullo stesso file dall'interno in esso, vengono avviate le finestre di dialogo appropriate.
Ho notato che il tipo MIME per quel particolare file fallisce, ma altri tipi di mime come .zip
restituiscono valori.
Mi manca qualcosa che quando il tipo MIME è nullo per chiamare una finestra di dialogo che consente all'utente di selezionare?
Ho provato altre varianti di avvio dell'app, incluso non impostare il tipo MIME e utilizzare solo .setData
senza successo.
L'azione che desidero è che un utente fa clic su un file, se è associato a un'applicazione avviata dall'app, in caso contrario, l'utente ottiene la finestra di dialogo "Azione completa utilizzando" con un elenco di app.
Grazie per qualsiasi consiglio.
cosa sta arrivando in mimo stringa ?? incollalo qui –
Sembra che sia qualcosa che ha un file associato è il tipo MIME corretto, ma se è qualcosa che non è stato legato ad un'app, passa attraverso null .. – stonedonkey