2015-12-27 4 views
0

Mon application utilise un type de fichier personnalisé qui peut être enregistré sur la mémoire externe et partagé.Android - Comment vérifier si le gestionnaire de fichiers est disponible?

Je veux utiliser le sélecteur de fichiers pour choisir un fichier et le charger. Voici mon code:

Uri uri = Uri.fromFile("path/to/folder"); 
Intent intent = new Intent(Intent.ACTION_PICK, uri); 
try { 
    startActivityForResult(Intent.createChooser(intent, "Select a file"), 123); 
} catch (android.content.ActivityNotFoundException e) { 
    Toast.makeText(this, "Error fileChooser",Toast.LENGTH_SHORT).show(); 
    Log.e("Dan", "onOptionsItemSelected: Error filechooser ActivityNotFoundException", e); 
} 

Ce code fonctionne absolument parfaitement sur mon émulateur genymotion et mon Nexus 4 sur CyanogenMod et appeler le gestionnaire de fichiers pour accéder au dossier.

Mais quand j'essaie mon tout nouveau LG G4, ça ne marche pas. Le plus gros problème est que je ne reçois aucun message d'erreur, juste un sélecteur de fichiers avec le bon titre et un message "Aucune application ne peut effectuer cette action".

Comment vérifier si un sélecteur de fichiers est disponible? (Pour fournir une alternative simple si nécessaire)

Répondre

1

Essayez ceci:

PackageManager packageManager = getActivity().getPackageManager(); 
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("file/*"); 
List<ResolveInfo> list = packageManager.queryIntentActivities(intent, 
           PackageManager.GET_ACTIVITIES)); 

Ensuite, vérifiez la taille du list, si elle est 0, alors il n'y a pas explorateur de fichiers.

+0

Belle photo, mais pas très efficace. Je reçois 3 réponses avec ça: com.android.documentsui/.DocumentsActivity, com.dropbox.android/.activity.DropboxGetFrom et com.estrongs.android.pop/.app.ESContentChooserActivity. Pourtant, je ne peux pas choisir un fichier avec cela ... –

+0

Oh OK qui fonctionne, donc apparemment Explorer ES ne peut pas gérer ACTION_PICK, et aucune application native Android ... Merci! –