【问题标题】:Instagram's video sharing Android IntentInstagram 的视频分享 Android Intent
【发布时间】:2016-11-17 19:02:23
【问题描述】:

关注Instagram's video sharing Android Intent。绕过选择器并直接启动 Instagram 的简单编辑。 See Gist 的相关代码和 adb 输出。

Kit Kat 设备按预期工作,但 Nougat 设备跌至 Line#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);

【问题讨论】:

  • 当您在 Android 7.0 上查看 Exception 时,您学到了什么?
  • E/ShareDialog: e.getLocalizedMessage >> file:///storage/emulated/0/870_90.mp4 exposed beyond app through ClipData.Item.getUri() E/ShareDialog: e.getCause >> null

标签: android android-intent instagram


【解决方案1】:

在 Android Nougat 上将异常记录在您的 gist 上会发现问题:

android.os.FileUriExposedException: file:///storage/emulated/0/test.mp4 通过 ClipData.Item.getUri() 暴露在应用之外

在 Android Nougat 上,您需要使用提供程序:

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);
}

见:android.os.FileUriExposedException: file:///storage/emulated/0/test.txt exposed beyond app through Intent.getData()

【讨论】:

    【解决方案2】:

    这似乎是FileUriExposedException。如果您的 targetSdkVersion 为 24 或更高,则您不能在 Intent 或其他地方使用 Uri.fromFile() 或其他 file Uri 值(例如,在“通知”中使用 setSound())。

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

    【讨论】:

      猜你喜欢
      • 2012-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多