问题
I want to share a file(.pdf,.apk etc) using share Intent, I searched google but I find only the code for sharing Image
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"));
回答1:
You use the same code, you just change the MIME type for the type of data you wish to share. If you wish to share anything regardless of type, use */*
回答2:
To keep your code pragmatic, use ShareCompat
class:
ShareCompat.IntentBuilder.from(this)
.setStream(uri)
.setType(URLConnection.guessContentTypeFromName(file.getName()))
.startChooser();
回答3:
For sdk 24 and up, if you need to get the Uri of a file outside your app storage you have this error.
android.os.FileUriExposedException: file:///storage/emulated/0/MyApp/Camera_20180105_172234.jpg exposed beyond app through ClipData.Item.getUri()
to fix this : exposed beyond app through ClipData.Item.getUri
来源:https://stackoverflow.com/questions/23026776/how-to-share-a-file-in-android-programmatically