提问者:小点点

德尔福Android意图没有打开正确的应用程序进行视频播放或应用程序行为不正常


我正在使用Delphi XE5为用户创建.avi视频文件的应用程序。成功创建视频后(甚至只是因为用户想再次观看视频),它会尝试使用选择的视频应用程序打开它。我知道 android 为文件类型选择正确的应用程序,或者您可以直接提供文件的 MIME 类型。所以,使用我正在做的德尔福的意图

intent:=TJIntent.Create;
intent.setAction(TJIntent.JavaClass.ACTION_VIEW);      
intent.setData(TJnet_Uri.JavaClass.parse(StringToJString('file://'videoFile)));
intent.setType(StringToJString('video/avi'));

当我这样做时,会出现一个非常基本的视频播放器(“设置”的“正在运行的应用程序”部分显示一个名为Android Media的应用程序正在运行),带有播放按钮,但不显示视频。但是,如果您使用任何文件管理器,甚至浏览图库并单击文件,则可以使用“查看视频”应用程序很好地播放该文件。

我无法直接调用查看视频,甚至无法显示视频应用列表供用户选择。我尝试了不同的MIME类型,例如

intent.setType(StringToJString('video/*'));

甚至

intent.setType(StringToJString('*/*'));

这允许用户从其设备中的任何应用程序中进行选择(没有意义,但只是用于测试),因此他可以选择查看视频,但即使这样做,应用程序也只显示一个播放按钮,按下时不显示任何内容。

因此,看起来当从我的应用程序调用时,View Video 无法播放我创建的视频(我没有打开它或类似的东西,选中),但是当从其他应用程序调用时,它可以。

有人知道使用Delphi XE5的意图时的错误或限制吗?或者我做得不对?


共1个答案

匿名用户

Delphi XE5中的< code>intent.settype破坏了数据属性的内容。使用另一个setter,如< code>SetDataAndType,效果很好。用那个!不确定他们是在XE6还是XE7中修复的。