Instagram的视频共享Android意图
正在关注Instagram's video sharing Android Intent。简单的编辑可以绕过选择器并直接启动Instagram。相关代码和adb输出的See Gist。Instagram的视频共享Android意图
Kit Kat设备按照预期工作,但是Nougat设备下降到第20行,启动Play Store,就好像Instagram没有安装。
在这两个设备上,ShareDialog的startInstagram()的第14行确实提供了一个支持视频共享功能的应用程序(包括Instagram)的选择器。
用这种方法共享图像的相关代码在两个设备上按预期工作。
UPDATE 1:实施新的ContentProvider方法会导致Instagram在启动共享Intent时崩溃。我会测试分享视频到另一个社交网络,看看是否有效。
更新2:原来的Instagram没有发挥好与
share.setDataAndType(contentUri, "video/*");
。
单独设置它们,使所有内容处于正常工作状态。
share.setType("video/*"); share.putExtra(Intent.EXTRA_STREAM, contentUri);
登录Android上的牛轧糖的要点异常揭示了问题:
android.os.FileUriExposedException:文件:///storage/emulated/0/test.mp4通过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);
}
这似乎是一个FileUriExposedException
。如果您的targetSdkVersion
为24或更高,则不能在Intent
或其他地方(例如,'通知'上的setSound()
)使用Uri.fromFile()
或其他file
Uri
值。
使用FileProvider
通过ContentProvider
服务您的文件。
当你看到Android 7.0上的'Exception'时,你学到了什么? – CommonsWare
E/ShareDialog:e.getLocalizedMessage >> file:///storage/emulated/0/870_90.mp4通过ClipData.Item.getUri()暴露超出应用程序 E/ShareDialog:e.getCause >> null' – es0329