public interface ShareService
Example
Services.get(ShareService.class).ifPresent(service -> {
service.share("This is the subject", "This is the content of the message");
});
When sharing files, the Charm Down
StorageService can be used to create/read the file. Note that on Android,
the file has to be located in a public folder (see
StorageService#getPublicStorage), or sharing it won't be allowed.
Example
File root = Services.get(StorageService.class)
.flatMap(s -> s.getPublicStorage("Documents"))
.orElseThrow(() -> new RuntimeException("Documents not available"));
// select or create a file within Documents folder:
File file = new File(root, "myFile.txt");
// share the file
Services.get(ShareService.class).ifPresent(service -> {
service.share("text/plain", file);
});
Android Configuration
Create the file /src/android/res/xml/file_provider_paths.xml
with
the following content that allows access to the external storage:
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path name="external_files" path="." />
</paths>
And add this provider
to the manifest, within the Application tag:
<manifest package="${application.package.name}" ...>
<application ...>
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${application.package.name}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_provider_paths" />
</provider>
</application>
</manifest>
iOS Configuration: nothing is required, but if the app is sharing
images to the user's local gallery, the key
NSPhotoLibraryUsageDescription
is required in the app's plist file.
Other similar keys could be required as well.
Modifier and Type | Method and Description |
---|---|
void |
share(java.lang.String contentText)
Allows sharing a message, selecting from the suitable apps available in the
user device.
|
void |
share(java.lang.String type,
java.io.File file)
Allows sharing a file, selecting from the suitable apps available in the
user device.
|
void |
share(java.lang.String subject,
java.lang.String contentText)
Allows sharing a message, selecting from the suitable apps available in the
user device.
|
void |
share(java.lang.String subject,
java.lang.String contentText,
java.lang.String type,
java.io.File file)
Allows sharing a file, selecting from the suitable apps available in the
user device.
|
void share(java.lang.String contentText)
contentText
- A string with the content to be sharedvoid share(java.lang.String subject, java.lang.String contentText)
subject
- A string with the subject of the messagecontentText
- A string with the content to be sharedvoid share(java.lang.String type, java.io.File file)
type
- On Android only, the MIME type of the file. It can be
'∗/∗', but not empty. On iOS it can be null. Usual types are:
file
- A valid file to be shared.void share(java.lang.String subject, java.lang.String contentText, java.lang.String type, java.io.File file)
subject
- A string with the subject of the messagecontentText
- A string with the content to be sharedtype
- On Android only, the MIME type of the file. It can be
'∗/∗', but not empty. On iOS it can be null. Usual types are:
file
- A valid file to be shared.