J'ai vu cette boîte de dialogue pour sélectionner/ouvrir un fichier sur Android dans certaines applications et il me semble que le natif. Mais je ne peux pas trouver un moyen de l'utiliser dans mes propres applications. La langue de la capture d'écran ci-jointe est l'allemand, mais je suis sûr que quelqu'un le reconnaîtra. Screenshot of the file-dialogComment utiliser natif android fichier-ouvrir-dialogue?
Répondre
Vous pouvez utiliser le ACTION_GET_CONTENT avec le type MIME intention "*/*". Il retourne l'URI sur le onActivityResult
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent()
.setType("*/*")
.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select a file"), 123);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==123 && resultCode==RESULT_OK) {
Uri selectedfile = data.getData(); //The uri with the location of the file
}
}
Cela semble être l'interface utilisateur du système pour the Storage Access Framework. Vous utiliseriez ACTION_OPEN_DOCUMENT
pour permettre à l'utilisateur d'ouvrir un document existant, ou ACTION_CREATE_DOCUMENT
pour permettre à l'utilisateur de créer un nouveau document.
Cependant, il ne s'agit pas d'un fichier . C'est un contenu UI. L'utilisateur peut parcourir les éléments qui ne sont pas stockés localement — dans la capture d'écran, l'utilisateur peut parcourir ses zones Google Drive et One Drive. Et, ce que vous obtenez est a Uri
pointing to content, not a file path.
Oui, c'est exactement ce que je recherchais! Merci beaucoup! Juste ne savais pas que cela s'appelle le contenu, mais il est tout à fait logique ... – bartolja
Oui, c'est encore mieux, car il permet également d'accéder aux fichiers dans des applications comme Dropbox. Dropbox n'apparaît pas dans la liste lorsque ** ACTION_OPEN_DOCUMENT ** est utilisé. – bartolja
Lorsque je fais cela avec 'set_type (" image/* ")' sur KITKAT, cela ne m'amène pas à cette boîte de dialogue, mais à la place une liste d'applications à utiliser pour l'ouverture apparaît. – Tjaart