Questo documento mostra come integrare la condivisione nella tua app Android in modo che gli utenti possano condividere immagini, video e adesivi su Instagram Reels.
Reels LayersThe Reels composer has a background video layer and an optional sticker layer.
Sharing Icon
|
Utilizza un intento esplicito per lanciare l'app Instagram e inviare contenuti per Reels. L'app Instagram riceve il contenuto, lo carica nello strumento di composizione dei reel e l'utente può modificarlo e pubblicarlo nei propri reel.
In generale, ecco come funziona il tuo flusso di condivisione:
"com.instagram.android" per assicurarti che l'app Instagram gestisca l'intento.Elimina tutti i file temporanei che crei sul dispositivo dell'utente.
Devi inviare i seguenti dati quando condividi su Reels.
| Dati | Descrizione |
|---|---|
ID dell'app di Meta stringa | Obbligatorio. Il tuo ID dell'app di Meta |
Risorse multimediali stringa per una singola risorsaoppure una lista per più risorse | Obbligatorio. Devi scegliere una delle seguenti opzioni:
|
Risorsa adesivo stringa | L'URI per un adesivo presente come file locale sul dispositivo dell'utente. I formati di adesivo accettabili sono |
I seguenti esempi di codice Java e Kotlin mostrano come inviare una singola immagine o un singolo video, più immagini o più video e immagini o video con un adesivo.
L'esempio di codice seguente invia un file a Instagram in modo che l'utente possa modificarlo e pubblicarlo su Instagram Reels.
// Instantiate an intent
val intent = Intent("com.instagram.share.ADD_TO_REEL")
// Set package
intent.setPackage("com.instagram.android")
// Attach your App ID to the intent
val appId = "your-app-id"
intent.putExtra("com.instagram.platform.extra.APPLICATION_ID", appId)
// Attach your image or video to the intent from a URI
val mediaAssetUri = Uri.parse("your-image-or-video-asset-uri-goes-here")
intent.setDataAndType(mediaAssetUri, "image/* video/*")
intent.putExtra(Intent.EXTRA_STREAM, mediaAssetUri)
// Instantiate an activity
val activity: Activity = getActivity()
// Grant URI permissions
intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
val resInfoList = activity.packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)
for (resolveInfo in resInfoList) {
val packageName = resolveInfo.activityInfo.packageName
activity.grantUriPermission(packageName, mediaAssetUri, Intent.FLAG_GRANT_READ_URI_PERMISSION)
}
// Verify that the activity resolves the intent and start it
if (activity.packageManager.resolveActivity(intent, 0) != null) {
activity.startActivityForResult(intent, 0)
}L'esempio di codice seguente invia più file a Instagram in modo che l'utente possa modificarli e pubblicarli su Instagram Reels.
// Instantiate an intent
val intent = Intent("com.instagram.share.ADD_TO_REEL_MULTIPLE")
// Set package
intent.setPackage("com.instagram.android")
// Attach your App ID to the intent
val appId = "your-app-id"
intent.putExtra("com.instagram.platform.extra.APPLICATION_ID", appId)
intent.setType("image/* video/*")
// Attach your files to the intent
val uri1 = Uri.parse("your-first-uri-goes-here")
val uri2 = Uri.parse("your-second-uri-goes-here")
val mediaList = mutableListOf<Uri>()
mediaList.addAll(listOf(uri1, uri2))
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, ArrayList(mediaList))
// Instantiate an activity
val activity: Activity = getActivity()
// Grant URI permissions
intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
val resInfoList =
activity.packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)
for (uri in mediaList) {
for (resolveInfo in resInfoList) {
val packageName = resolveInfo.activityInfo.packageName
activity.grantUriPermission(packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION)
}
}
// Verify that the activity resolves the intent and start it
if (activity.packageManager.resolveActivity(intent, 0) != null) {
activity.startActivityForResult(intent, 0)
}L'esempio di codice seguente invia un video a Instagram, includendo un adesivo opzionale, in modo che l'utente possa modificarlo e pubblicarlo su Instagram Reels.
// Instantiate an intent
val intent = Intent("com.instagram.share.ADD_TO_REEL")
// Set package
intent.setPackage("com.instagram.android")
// Attach your App ID to the intent
val appId = "your-app-id"
intent.putExtra("com.instagram.platform.extra.APPLICATION_ID", appId)
// Attach your video to the intent from a URI
val videoAssetUri = Uri.parse("your-video-asset-uri-goes-here")
intent.setDataAndType(videoAssetUri, "video/*")
intent.putExtra(Intent.EXTRA_STREAM, videoAssetUri)
// Attach your sticker to the intent from a URI
val stickerAssetUri = Uri.parse("your-image-asset-uri-goes-here")
intent.putExtra("interactive_asset_uri", stickerAssetUri)
// Instantiate an activity
val activity: Activity = getActivity()
// Grant URI permissions
intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION
val resInfoList = activity.packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)
for (resolveInfo in resInfoList) {
val packageName = resolveInfo.activityInfo.packageName
activity.grantUriPermission(packageName, videoAssetUri, Intent.FLAG_GRANT_READ_URI_PERMISSION)
activity.grantUriPermission(packageName, stickerAssetUri, Intent.FLAG_GRANT_READ_URI_PERMISSION)
}
// Verify that the activity resolves the intent and start it
if (activity.packageManager.resolveActivity(intent, 0) != null) {
activity.startActivityForResult(intent, 0)
}Per una maggiore praticità per gli sviluppatori, Meta ha pubblicato un esempio di codice per la condivisione su Instagram Reels su GitHub qui: fbsamples/share_to_reels_android. Guarda il video seguente per imparare a utilizzare l'esempio di GitHub.
