关注Instagram的视频分享Android Intent。简单的编辑绕过选择器,直接启动Instagram。请参阅相关代码的要点和adb输出。
奇巧设备按预期工作,然而牛轧糖设备落在第20行,启动Play Store,好像没有安装Instagram。
在这两个设备上,ShareDialog的startInstagram()的第14行确实显示了一个视频分享功能应用程序的选择器,包括Instagram。
使用相同方法共享图像的相关代码在两个设备上都能正常工作。
UPDATE 1:实现新的ContentProvider方法会使Instagram在启动共享意图时崩溃。我将测试把视频分享到另一个社交网络上,看看是否有效。
UPDATE 2:原来Instagram不适合
share.setDataAndType(contentUri, "video/*");
.
分开设置,使一切井然有序。
share.setType("video/*");
share.putExtra(Intent.EXTRA_STREAM, contentUri);
在Android牛轧糖的gist上记录异常可以揭示问题:
android.os。FileUriExposedException: file:///storage/emululated/0/test.mp4 exposed beyond app through clipdata . itemgeturi ()
在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);
}
见:android.os.FileUriExposedException: file:///storage/emululated/0/test.txt通过Intent.getData()暴露在app之外
这似乎是一个FileUriExposedException
。如果你的targetSdkVersion
为24或更高,你不能在Intent
或其他地方使用Uri.fromFile()
或其他file
Uri
值(例如,setSound()
在' Notification '上)。
使用FileProvider
通过ContentProvider
提供文件