Instagram 的视频分享 Android Intent

Instagram's video sharing Android Intent

以下 Instagram's video sharing Android Intent. Trivial edit to bypass a chooser and launch Instagram directly. See Gist 相关代码和 adb 输出。

Kit Kat 设备按预期工作,但 Nougat 设备掉到第 20 行,启动 Play 商店,就好像 Instagram 没有安装一样。

在这两种设备上,ShareDialog 的 startInstagram() 的第 14 行确实提供了视频共享应用程序的选择器,包括 Instagram。

使用相同方法共享图像的相关代码在两种设备上都能正常工作。

更新 1:实施新的 ContentProvider 方法会使 Instagram 在启动共享 Intent 时崩溃。我会测试将视频分享到另一个社交网络,看看是否可行。

更新 2:事实证明 Instagram 不适合

share.setDataAndType(contentUri, "video/*");.

分开设置,一切正常。

share.setType("video/*"); share.putExtra(Intent.EXTRA_STREAM, contentUri);

那似乎是 FileUriExposedException。如果您的 targetSdkVersion 为 24 或更高,则不能在 Intent 或其他地方(例如 setSound() 在`通知上)。

使用 FileProvider 通过 ContentProvider 提供您的文件。

在Android牛轧糖上记录你的要点异常揭示了问题:

android.os.FileUriExposedException: file:///storage/emulated/0/test.mp4 exposed beyond app through ClipData.Item.getUri()

在 Android 牛轧糖上,您需要使用供应商:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    Uri contentUri = FileProvider.getUriForFile(getContext(), "com.your.package.fileProvider", newFile);
    intent.setDataAndType(contentUri, type);
}

参见: