Androidアプリにファイルのリストがあり、選択したアイテムを取得して、電子メールまたは他の共有アプリで送信できるようにしたいと思います。ここに私のコードがあります。
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_EMAIL, getListView().getCheckedItemIds());
sendIntent.setType("text/plain");
startActivity(sendIntent);
これは、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));
また、Zip file
すべてのファイルとAndroidで複数のファイルを送信するためのZipファイルを添付
これは、すべての単一ファイルに対して機能します!
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"));
}
ありがとう、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);
ACTION_SEND_MULTIPLE を使用して、複数のデータを誰かに配信します。
intent.setAction(Intent.ACTION_SEND_MULTIPLE);
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, arrayUri);
intent.setType("text/plain");
startActivity(intent);
arrayUri
は、送信するファイルのUriの配列リストです。
テキストファイルを共有または保存する例を次に示します。
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()));
}
}
まず、ファイルプロバイダーを定義する必要があります。 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)))
}
}
}