Файлы обмена файлами Android, отправляя их по электронной почте или другим приложениям
У меня есть список файлов в моем приложении для Android, и я хочу иметь возможность получать выбранные элементы и отправлять их по электронной почте или в любое другое приложение для обмена. Вот мой код.
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_EMAIL, getListView().getCheckedItemIds());
sendIntent.setType("text/plain");
startActivity(sendIntent);
Ответы
Ответ 1
это код для совместного использования файла в 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"));
}
Ответ 2
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(exportPath));
также вы можете сделать zip file
всего файла и приложить zip файл для отправки нескольких файлов в android
Ответ 3
Это работа для каждого файла!
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"));
}
Спасибо Тушар-Мате!
Ответ 4
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);
Ответ 5
Используйте ACTION_SEND_MULTIPLE для доставки нескольких данных кому-либо
intent.setAction(Intent.ACTION_SEND_MULTIPLE);
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, arrayUri);
intent.setType("text/plain");
startActivity(intent);
arrayUri
- это список массивов Uri файлов для отправки.
Ответ 6
Вот пример, чтобы поделиться или сохранить текстовый файл:
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()));
}
}
Ответ 7
Сначала вы должны определить провайдера файлов, см. Https://medium.com/@ali.dev/open-a-file-in-another-app-with-android-fileprovider-for-android-7-42c9abb198c1.
Код проверяет, что устройство содержит приложения, которые могут получить файл, см. Как проверить, можно ли обработать намерение в результате какого-либо действия? ,
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)))
}
}
}
Ответ 8
Прочитайте эту статью о Отправка содержимого в другие приложения
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.send_to)));