2017-09-15 3 views
1

Je dois laisser l'utilisateur sélectionner un fichier de son stockage local pour mon application. En ce moment j'utilise INTENT.ACTION_GET_CONTENT pour laisser l'utilisateur sélectionner le fichier, mais il donne également la possibilité de sélectionner l'URI à partir du nuage. Après avoir obtenu le fichier URI, je le traite comme un fichier local et j'effectue diverses opérations (y compris l'extraction de l'extension de fichier). Comment puis-je laisser l'utilisateur uniquement choisir des fichiers locaux?Comment permettre à l'utilisateur de sélectionner uniquement les fichiers locaux à l'aide d'Intent dans Android?

else if(menuItem.getItemId() == R.id.action_import_from_file){ 
    Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
    i.setType("*/*"); 
    startActivityForResult(Intent.createChooser(i, "Pick a file"), REQUEST_CODE_SELECT_FILE_FOR_IMPORT); 
} 

Répondre

2

S'il vous plaît essayer d'utiliser Intent.EXTRA_LOCAL_ONLY comme
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true);
Si l'application de la galerie Dans votre appareil le prend en charge, seuls les fichiers stockés localement seront affichés. Si l'application de galerie ne prend pas en charge l'intention ci-dessus, vous pouvez afficher un message d'erreur à l'utilisateur après avoir vérifié la longueur du fichier du chemin de fichier renvoyé depuis l'application Galerie.

1

essayer cette utilisation méthode setType() et préciser quel type de fichier à choisir par l'utilisateur

Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
i.setType("application/pdf|application/x-excel|text/csv"); 
startActivityForResult(Intent.createChooser(i, "Pick a file"), REQUEST_CODE_SELECT_FILE_FOR_IMPORT); 

vous pouvez également utiliser le tableau des types MIME comme ci-dessous le code

Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
String[] types = {"application/x-excel/*", "application/csv/*",}; 
i.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes); 
startActivityForResult(Intent.createChooser(i, "Pick a file"), REQUEST_CODE_SELECT_FILE_FOR_IMPORT); 
+0

est-ce que les fichiers xlsx et csv sont sous application? J'importe des jeux de données à partir de fichiers Excel, csv, etc. – ColonD

+0

@ColonD check updated ans –