我想使用共享Intent共享文件(.pdf,.apk等),我搜索谷歌但我只找到共享图像的代码
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
Uri screenshotUri = Uri.parse(path);
sharingIntent.setType("image/png");
sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
startActivity(Intent.createChooser(sharingIntent, "Share image using"));
请帮助解决这个问题
答案 0 :(得分:16)
您使用相同的代码,只需更改要共享的数据类型的MIME类型即可。如果您希望分享任何类型的内容,请使用*/*
答案 1 :(得分:1)
为使代码实用,请使用ShareCompat
类:
ShareCompat.IntentBuilder.from(this)
.setStream(uri)
.setType(URLConnection.guessContentTypeFromName(file.getName()))
.startChooser();
答案 2 :(得分:0)
对于sdk 24及更高版本,如果您需要在应用存储之外获取文件的Uri,则会出现此错误。
android.os.FileUriExposedException: file:///storage/emulated/0/MyApp/Camera_20180105_172234.jpg exposed beyond app through ClipData.Item.getUri()
答案 3 :(得分:0)
这将为您提供帮助
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
Uri screenshotUri = Uri.parse(path);
sharingIntent.setType("*/*");
sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
startActivity(Intent.createChooser(sharingIntent, "Share using"));
答案 4 :(得分:0)
public void ShareFile(String path)
{
Intent shareToneIntent=new Intent(Intent.ACTION_SEND);
shareToneIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(path));
shareToneIntent.setType(GetMimeType(Uri.parse(path)));
requireContext().startActivity(shareToneIntent);
}
public String GetMimeType(Uri uri) {
String mimeType = null;
if (ContentResolver.SCHEME_CONTENT.equals(uri.getScheme())) {
mimeType = requireContext().getContentResolver().getType(uri);
} else {
String fileExtension = MimeTypeMap.getFileExtensionFromUrl(uri.toString());
mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension.toLowerCase());
}
return mimeType;
}