J'ai une liste de fichiers dans mon Android et je veux pouvoir obtenir les éléments sélectionnés et les envoyer par e-mail ou toute autre application de partage. Voici mon code.
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_EMAIL, getListView().getCheckedItemIds());
sendIntent.setType("text/plain");
startActivity(sendIntent);
c'est le code pour partager un fichier sur Android
Intent intentShareFile = new Intent(Intent.ACTION_SEND);
File fileWithinMyDir = new File(myFilePath);
if(fileWithinMyDir.exists()) {
intentShareFile.setType("application/pdf");
intentShareFile.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+myFilePath));
intentShareFile.putExtra(Intent.EXTRA_SUBJECT,
"Sharing File...");
intentShareFile.putExtra(Intent.EXTRA_TEXT, "Sharing File...");
startActivity(Intent.createChooser(intentShareFile, "Share File"));
}
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(exportPath));
vous pouvez aussi faire Zip file
de tous les fichiers et joindre un fichier Zip pour envoyer plusieurs fichiers dans Android
Cela fonctionne pour chaque fichier!
private void shareFile(File file) {
Intent intentShareFile = new Intent(Intent.ACTION_SEND);
intentShareFile.setType(URLConnection.guessContentTypeFromName(file.getName()));
intentShareFile.putExtra(Intent.EXTRA_STREAM,
Uri.parse("file://"+file.getAbsolutePath()));
//if you need
//intentShareFile.putExtra(Intent.EXTRA_SUBJECT,"Sharing File Subject);
//intentShareFile.putExtra(Intent.EXTRA_TEXT, "Sharing File Description");
startActivity(Intent.createChooser(intentShareFile, "Share File"));
}
Merci Tushar-Mate!
File directory = new File(Environment.getExternalStorageDirectory() + File.separator + BuildConfig.APPLICATION_ID + File.separator + DIRECTORY_VIDEO);
String fileName = mediaModel.getContentPath().substring(mediaModel.getContentPath().lastIndexOf('/') + 1, mediaModel.getContentPath().length());
File fileWithinMyDir = new File(directory, fileName);
if (fileWithinMyDir.exists()) {
Uri fileUri = FileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".provider", fileWithinMyDir);
Intent intent = ShareCompat.IntentBuilder.from(this)
.setStream(fileUri) // uri from FileProvider
.setType("text/html")
.getIntent()
.setAction(Intent.ACTION_SEND) //Change if needed
.setDataAndType(fileUri, "video/*")
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(intent);
Utilisez ACTION_SEND_MULTIPLE pour fournir plusieurs données à quelqu'un
intent.setAction(Intent.ACTION_SEND_MULTIPLE);
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, arrayUri);
intent.setType("text/plain");
startActivity(intent);
arrayUri
est la liste des Uri des fichiers à envoyer.
Voici un exemple pour partager ou enregistrer un fichier texte:
private void shareFile(String filePath) {
File f = new File(filePath);
Intent intentShareFile = new Intent(Intent.ACTION_SEND);
File fileWithinMyDir = new File(filePath);
if (fileWithinMyDir.exists()) {
intentShareFile.setType("text/*");
intentShareFile.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + filePath));
intentShareFile.putExtra(Intent.EXTRA_SUBJECT, "MyApp File Share: " + f.getName());
intentShareFile.putExtra(Intent.EXTRA_TEXT, "MyApp File Share: " + f.getName());
this.startActivity(Intent.createChooser(intentShareFile, f.getName()));
}
}
Vous devez d'abord définir le fournisseur de fichiers, voir https://medium.com/@ALi.dev/open-a-file-in-another-app-with-Android-fileprovider-for-Android-7-42c9abb198c1 .
Le code vérifie qu'un périphérique contient des applications qui peuvent recevoir le fichier, voir Comment vérifier si une intention peut être gérée à partir d'une activité? .
fun sharePdf(file: File, context: Context) {
val uri = if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Lollipop) {
Uri.fromFile(file)
} else {
try {
FileProvider.getUriForFile(context, context.packageName + ".provider", file)
} catch (e: Exception) {
if (e.message?.contains("ProviderInfo.loadXmlMetaData") == true) {
throw (Error("FileProvider is not set or doesn't have needed permissions"))
} else {
throw e
}
}
}
if (uri != null) {
val intent = Intent()
intent.action = Intent.ACTION_SEND
intent.type = "application/pdf" // For PDF files.
intent.putExtra(Intent.EXTRA_STREAM, uri)
intent.putExtra(Intent.EXTRA_SUBJECT, file.name)
intent.putExtra(Intent.EXTRA_TEXT, file.name)
// Grant temporary read permission to the content URI.
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
// Validate that the device can open your File.
val pm = context.packageManager
if (intent.resolveActivity(pm) != null) {
context.startActivity(Intent.createChooser(intent,
context.getString(R.string.share_pdf)))
}
}
}