Comment puis-je configurer un android intention pour plusieurs types de fichiers (office, pdf, images, texte) et le retour d'un chemin d'accès?

Je suis nouveau sur les intentions et je suis à essayer de comprendre comment utiliser parse(URI) et/ou setType() pour obtenir les bons types de demande d'ouvrir et de me permettre de sélectionner les choses.

Je veux lancer une intention à partir de mon application qui permettra à l'utilisateur de choisir parmi de nombreux types de fichiers (.PDF, .DOCX, .XLSX, .PPTX, .DOC, .JPG, .PNG, .TXT, .LOG, etc.). Ce que j'ai besoin de l'activité de retour est un chemin complet de ce fichier.

Droit maintenant, je suis en utilisant setType("*/*") avec un sélecteur, que j'ai trouvé ici, mais c'est automatiquement l'ouverture de certains documents sélecteur de en Android. J'ai le gestionnaire de fichiers et d'autres applications, et veulent savoir ce qu'est la norme setType est ou le type MIME. Merci à l'avance.

Aussi, je m'excuse si ce sujet a déjà été répondu. J'ai regardé en ligne, mais je pense que je suis à la recherche de quelque chose de mal parce que les résultats que j'obtiens sont pour les intentions qui veulent juste un de ces ou de ne pas retourner le chemin.

Mon code est ci-dessous: (Note: ce qui est fait à l'intérieur d'un fragment)

static final int PICK_FILE_REQUEST = 101;

private String pathToFile = "";

public String selectFile()  {
    String path = "";
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT), chooser = null;
    intent.setType("*/*");
    chooser = Intent.createChooser(intent, "Find file to Print");
    startActivityForResult(chooser, PICK_FILE_REQUEST);
    path = pathToFile;
    return path;
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)   {
    if(requestCode == PICK_FILE_REQUEST){
        if(resultCode == Activity.RESULT_OK){
            pathToFile = data.getDataString();
            String temp = data.getStringExtra("path");
            Log.d("Files Fragment: ", pathToFile);
            Log.d("Files Fragment: ", temp);
        }
    }
}
"Ce que j'ai besoin de l'activité de retour est un chemin complet de ce fichier" -- beaucoup, sinon la plupart, ne sera pas de retour vous un chemin vers le fichier sur le système de fichiers, que votre application n'aura pas accès au dossier. Si vous obtenez un content:// Uri dos, vous aurez besoin d'utiliser ContentResolver et méthodes comme openInputStream() pour lire le contenu.
Je savais qu'il me manquait quelque chose. Je ne savais pas que c'était sur l'accès. Dites-vous que généralement ils reviennent contenu:// Uri comme une norme? Je veux juste que cela fonctionne pour la plupart des navigateurs de fichiers. Je vais droit à une certaine logique pour gérer le contenu de résolution. J'ai repenser mon processus quelque peu. Merci!
"Vous voulez dire que généralement ils reviennent contenu:// Uri comme une norme?" -- cela dépend de la "ils". ACTION_GET_CONTENT peut être manipulé par n'importe quoi MediaStore (qui sera de retour content:// Uri valeurs) à un gestionnaire de fichiers tiers (qui sera de retour... quelque chose, mais je vais être plus retourner un traditionnel chemin d'accès au fichier). ACTION_OPEN_DOCUMENT, comme il est suggéré dans la réponse, va toujours de retour d'un content:// Uri. Et le pourcentage de fois que vous obtenez une content:// Uri ne fera que croître avec le temps.
Je sais, je viens vous demander votre avis pour ce qui est le plus fréquent (ce qui est une mauvaise question pour les apps android!). Si elle ne veut pas venir avec quelque chose que je vous suggère une application gratuite pour le téléchargement. Je vais devoir créer une super méthode pour filtrer ces contenus:// Uri " s !!! Hâte d'y être. Grâce CommonsWare. Je suis toujours curieux de savoir si ces deux actions seront viables pour les formats de fichier que j'ai énumérés dans la question d'origine. Si vous connaissez bien, si pas je peux le trouver via des tests.
ACTION_GET_CONTENT et ACTION_OPEN_DOCUMENT sont des choix raisonnables. À l'égard des types MIME, de la des types MIME pour ces formats de fichier (disponible en quelques secondes via votre moteur de recherche préféré). La seule extension de fichier qui vous liste qui n'a pas de sens particulier est .LOG.

OriginalL'auteur napkinsterror | 2014-12-08