How to add a share intent with robovm (libgdx)?
Asked Answered
D

1

16

So for android devices there is a default share intent function that you call that will list all the apps that is downloaded on the device with that allows sharing of content. How would I do this using robovm, here is a Screen shot of what I am trying to achieve. Also on a side note, what I want to ultimately do is take a screenshot of their device and post it to whatever social media site the user chooses. Any help would be greatly appreciated :D

enter image description here

Dent answered 19/10, 2015 at 4:50 Comment(0)
G
16

For iOS users:

RoboVM is deprecated in favor of RoboPods. So, RoboVM is no more, what now?

https://github.com/robovm/robovm-robopods/tree/master

For sharing text using roboVM, you can set the UIAvtivityViewController class

NSString textShare = new NSString("This is the text to share");
NSArray texttoshare = new NSArray(textShare);
UIActivityViewController share = new UIActivityViewController(texttoshare,null);
presentViewController(share, true, null);

For sharing text, image and app, you can do the following code,

NSURL imgUrl = new NSURL(EXTERNAL_IMG_URL);
NSData data = NSData.read(imgUrl); 
UIImage image = new UIImage(data); 
NSString appStoreUrl = new NSString(APP_STORE_URL); 
NSString googleUrl = new NSString(GOOGLE_PLAY_URL); 
NSString text = new NSString(TEXT_TO_SHARE); 
NSArray<NSObject> texttoshare = new NSArray<NSObject>(text, image, appStoreUrl, googleUrl); 
UIActivityViewController share = new UIActivityViewController( 
texttoshare, null); 
if (UIDevice.getCurrentDevice().getUserInterfaceIdiom() == UIUserInterfaceIdiom.Phone) {  

 //iPhone 
iosApplication.getUIViewController().presentViewController( 
 share, true, null);  
} else { 
 //iPad 

 UIPopoverController popover = new UIPopoverController(share);
 UIView view = iosApplication.getUIViewController().getView(); 
 CGRect rect = new CGRect( 
 view.getFrame().getWidth() / 2, 
 view.getFrame().getHeight() / 4, 
 0, 
 0); 
 popover.presentFromRectInView( rect, view, UIPopoverArrowDirection.Any, true); 
 }

The following code sends an animated .gif through Mail and Messenger, however, Twitter only shares a static image.

public void shareGif(String path)
{        
    NSURL url = new NSURL(new File(path));

    NSArray<NSObject> imageArray = new NSArray<NSObject>(image);
    UIActivityViewController share = new UIActivityViewController(imageArray,null);
    ((IOSApplication)Gdx.app).getUIViewController().presentViewController(share, true, null);
}

For generic share in iOS, with text, link and image the code is given below:

@Override
public void share() {
    NSArray<NSObject> items = new NSArray<>(
            new NSString("Hey! Check out this mad search engine I use"),
            new NSURL("https://www.google.com"),
            new UIImage(Gdx.files.external("image.png").file())
    );
    UIActivityViewController uiActivityViewController = new UIActivityViewController(items, null);
    ((IOSApplication) Gdx.app).getUIViewController().presentViewController(uiActivityViewController, true, null);
}

For Android users: Sharing Content with intents

It says RoboVM is for iOS only, So how would we use it for android using LibGDX? roboVM with RoboPods is used for iOS while google play services is used for android. Different devices, different code. For android, after integrating the android sdk to your IDE, just link the google play services lib to the android project.

Glade answered 14/6, 2016 at 1:16 Comment(3)
iOS part still valid in 2019. For Android, it is not needed to have Play Services.Slavocracy
@MrStahlfelge. It works but if you try text, link and image you get differnt result depending on the platform. This is not great.. With Instagram > Just the Image without the text. With email > Email + link + text. That's good. with Whatsapp > Text + UR. With Twitter > Image + Text. With Facebook > Just the linkHyperaesthesia
Any idea of how to set the subject in an email?Haynor

© 2022 - 2024 — McMap. All rights reserved.