Je veux implémenter le sélecteur de dossier dans android. J'ai implémenté le code ci-dessous pour ouvrir le sélecteur de fichier.comment obtenir le vrai chemin de uri donné dans android filechooser dropbox et google drive?
public static void showFileChooser(Activity activity, Fragment fragment) {
try {
File imageStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "example");
if (!imageStorageDir.exists()) {
imageStorageDir.mkdirs();
}
File file = new File(imageStorageDir + File.separator + "IMG_" + String.valueOf(System.currentTimeMillis()) + ".jpg");
mCapturedImageURI = Uri.fromFile(file); // save to the private variable
final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI);
captureIntent.putExtra("capturedimageuri", mCapturedImageURI.toString());
// Intent for Audio Recording
final Intent audioRecordIntent = new Intent();
audioRecordIntent.setAction(IAdoddleConstants.ACTION_AUDIO_RECORD);
final Intent videoRecordIntent = new Intent();
videoRecordIntent.setAction(IAdoddleConstants.ACTION_VIDEO_RECORD);
// Use the GET_CONTENT intent from the utility class
Intent target = com.asite.adoddle.filechooser.FileUtils.createGetContentIntent();
// Create the chooser Intent
if (activity != null) {
Intent intent = Intent.createChooser(
target, activity.getString(R.string.chooser_title));
intent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] { captureIntent,audioRecordIntent, videoRecordIntent});
activity.startActivityForResult(intent, IMAGE_ANNOTATION_REQUEST_CODE);
} else {
Intent intent = Intent.createChooser(
target, fragment.getString(R.string.chooser_title));
intent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] { captureIntent,audioRecordIntent, videoRecordIntent});
fragment.startActivityForResult(intent, IMAGE_ANNOTATION_REQUEST_CODE);
}
} catch (ActivityNotFoundException e) {
AdoddleLog.e(DEBUG_TAG, "Error:" + e);
} catch (Exception ex) {
ex.printStackTrace();
CommonUtilities.showToast(activity, activity.getString(R.string.error_message), Toast.LENGTH_LONG);
}
}
Maintenant, il ouvre filechooser même comme ci-dessous.
Maintenant, quand je clique sur ce « Documents » Je reçois des applications différentes d'où je peux choisir les fichiers même comme ci-dessous.
Ici vous pouvez voir des applications telles que Google Drive et Dropbox. Maintenant, je veux sélectionner les fichiers de cette application. Maintenant, quand je sélectionne le fichier de la boîte de dépôt puis dans onActivityResult(int requestCode, int resultCode, Intent data)
je reçois contenu: //com.dropbox.android.FileCache/filecache/2642b6eb-f9da-4775-b6c5-6cb4d6884018 uri de l'intention. Maintenant Comment obtenir le vrai chemin de cet uri? Je veux joindre ce fichier à mon activité. Aussi, je ne suis pas en mesure d'obtenir le vrai chemin du fichier de google drive.
ne pas utiliser un chemin de fichier, utilisez 'InputStream' à la place - voir' ContentResolver' docs pour plus d'informations – pskink
@pskink donc vous dire en utilisant InputStream I écrire ce fichier sur ma carte SD, puis utiliser le chemin de fichier de cette carte SD. –
Pourquoi avez-vous besoin d'un chemin de fichier? ne pouvez-vous pas utiliser 'InputStream'? (ou 'ParcelFileDescriptor' /' FileDescriptor')? – pskink