2016-05-22 3 views
0

Ouvrir filechooser est un gros problème pour moi et peut-être pour beaucoup d'autres .... il existe une solution complète pour gérer le type d'entrée dans android? Le code ci-dessus fonctionne pour la version 3.0+ et 4.1 ... ne fonctionne pas pour une autre version Biger que 4,1 ... pendant des semaines en essayant de trouver une solution, mais sans succèsType de saisie sélecteur de fichier Android pour le téléchargement d'images

// For Android 3.0+ 
      public void openFileChooser(ValueCallback uploadMsg, String acceptType) { 
      mUploadMessage = uploadMsg; 
      Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
      i.addCategory(Intent.CATEGORY_OPENABLE); 
      i.setType("*/*"); 
      MyWb.this.startActivityForResult(
      Intent.createChooser(i, "File Browser"), 
      FILECHOOSER_RESULTCODE); 
      } 

     //For Android 4.1 
      public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture){ 
       mUploadMessage = uploadMsg; 
       Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
       i.addCategory(Intent.CATEGORY_OPENABLE); 
       i.setType("image/*"); 
       MyWb.this.startActivityForResult(Intent.createChooser(i, "File Chooser"), MyWb.FILECHOOSER_RESULTCODE); 

      } 

Répondre

0

La méthode ci-dessous est une façon plus conventionnelle de choisir une image à partir d'un fichier. L'intention utilise onActivityResult() pour récupérer ce que l'utilisateur a choisi.

Créez d'abord l'intention.
// Creates an Intent to pick a photo Intent i = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); Exécutez ensuite l'intention:
// ARGS: the intent, a key to access later startActivityForResult(i, 1);

Vous devez maintenant définir un onActivityResult(int requestCode, int resultCode, Intent data) (instructions détaillées disponibles here). Voici quelques exemples de code:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == 1 && resultCode == RESULT_OK && data != null) { 
     Uri selectedImage = data.getData(); 
     try { 
      // Do whatever you want with this bitmap (image) 
      Bitmap bitmapImage = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImage); 
      Log.i("Image Path", selectedImage.getPath()); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Mettez la méthode directement dans votre classe. Vous pouvez maintenant faire ce que vous voulez avec le Bitmap qui a été reçu.

+0

Merci pour votre réponse, mais pour la version Android 4.1 + le sélecteur de fichier ne s'ouvre pas .... –