it-swarm.com.de

Teilen Sie Video- und Aufkleberbilder mit Instagram Story auf Android

Wie kann ich ein Video als Hintergrund und ein Bild als Aufkleber zusammen für Instagram Story freigeben? 

Diese Dokumentation hat nur eine Lösung, wenn beide Inhalte Bilder sind.

https://developers.facebook.com/docs/instagram/sharing-to-stories/

Ich möchte ein Hintergrundvideo zusammen mit einem Aufkleberbild senden. Ist das mit Instagram Story möglich?

Ich habe es versucht, aber leider hat es nicht geklappt:

   // Define image asset URI and attribution link URL
    Uri backgroundAssetUri = Uri.fromFile(new File(backgroundPath));
    Uri stickerAssetUri = Uri.fromFile(new File(stickerPath));

    // Instantiate implicit intent with ADD_TO_STORY action,
    // background asset, and attribution link
    Intent intent = new Intent("com.instagram.share.ADD_TO_STORY");
    intent.setDataAndType(backgroundAssetUri, "*/*");
    intent.putExtra("interactive_asset_uri", stickerAssetUri);
    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

    callbackManager.startActivityForResult(Intent.createChooser(intent, "Share"), NatShareCallbacks.ACTIVITY_SHARE_INSTAGRAM_STORY);

Das Beispiel mit zwei Bildern funktioniert jedoch problemlos. Ich sehe das Problem hauptsächlich bei SetType, da es sich um zwei verschiedene Inhaltstypen handelt.

[BEARBEITEN]

Video alleine ohne Aufkleber hatte für mich bereits auf Android funktioniert und das Beispiel der Dokumentation mit Bildhintergrund und Bildaufkleber funktioniert ebenfalls einwandfrei. Aber nicht Video und Aufkleber zusammen.

Es funktioniert problemlos unter iOS:

NSData *backgroundVideo = [[NSFileManager defaultManager] contentsAtPath:path];

UIImage *appIcon = [UIImage imageNamed: [[[[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIcons"] objectForKey:@"CFBundlePrimaryIcon"] objectForKey:@"CFBundleIconFiles"]  objectAtIndex:0]];

// Verify app can open custom URL scheme, open
NSURL *urlScheme = [NSURL URLWithString:@"instagram-stories://share"];
if ([[UIApplication sharedApplication] canOpenURL:urlScheme]) {
    // Assign background image asset and attribution link URL to pasteboard
    //NSArray *pasteboardItems = @[@{@"com.instagram.sharedSticker.backgroundVideo" : backgroundVideo}];
    NSArray *pasteboardItems = @[@{@"com.instagram.sharedSticker.backgroundVideo" : backgroundVideo, @"com.instagram.sharedSticker.stickerImage" : UIImagePNGRepresentation(appIcon)}];
    NSDictionary *pasteboardOptions = @{UIPasteboardOptionExpirationDate : [[NSDate date] dateByAddingTimeInterval:60 * 5]};
    // This call is iOS 10+, can use 'setItems' depending on what versions you support
    [[UIPasteboard generalPasteboard] setItems:pasteboardItems options:pasteboardOptions]; [[UIApplication sharedApplication] openURL:urlScheme options:@{} completionHandler:nil];
} else {
    // Handle older app versions or app not installed case

}
7
Oli

Das war ein Fehler. 

Facebook schrieb: .__ "Sie haben die Funktionalität jetzt auch für Android hinzugefügt, sodass Sie jetzt einen Hintergrund mit einem Aufkleber senden können."

0
Oli

Die offensichtlichsten Dinge, die Sie sofort überprüfen sollten, sind:

  1. Entspricht Ihr Vermögenswert diesen Kriterien:

    Uri zu einem Bild-Asset (JPG, PNG) oder Video-Asset (H.264, H.265, WebM) . Mindestmaße 720x1280. Empfohlene Bildverhältnisse 9:16 oder 9:18 . Videos können 1080p und bis zu 20 Sekunden lang sein. Der Uri muss ein Inhaltsuri für eine lokale Datei auf dem Gerät sein.

  2. intent.setDataAndType(backgroundAssetUri, "*/*"); - Die Dokumente sagen aus, dass der zweite Wert der Funktion null sein könnte, ich glaube jedoch nicht, dass "*/*" ein gültiger Mime-Typ ist: Versuchen Sie es mit MEDIA_TYPE_VIDEO - Link zu Docsintent.setDataAndType(backgroundAssetUri, MEDIA_TYPE_VIDEO);

MEDIA_TYPE_VIDEO in API Level 11 hinzugefügt

public static final int MEDIA_TYPE_VIDEO

Konstante für die MEDIA_TYPE-Spalte, die angibt, dass es sich bei der Datei um ein Video handelt Datei.

Konstanter Wert: 3 (0x00000003)

  1. Und schließlich - haben Sie den Start der Aktivität wie im Beispiel getestet:
 Aktivität activity = getActivity (); 
 activity.grantUriPermission ("com.instagram.Android", stickerAssetUri, Intent.FLAG_GRANT_READ_URI_PERMISSION); 
 if (activity.getPackageManager (). resolActivity (intent, 0)! = null) {
 activity.startActivityForResult (Absicht 0); 
 } 
1
Stoil Ivanov