本文整理自网络,侵删。
用 Delphi 写的 APP 要打开诸如 MP4,PDF 等文件,可以调用安卓系统里的其它程序来打开。调用方法,我之前写过一篇:
https://blog.csdn.net/pcplayer/article/details/80852385
最近要播放 MP4,再次把这段代码拿来测试了一下。发现在 Delphi 10.3.1 + Android 9.0 的情况下:
URI := TJnet_Uri.JavaClass.parse(StringToJString('file:///' + fName)); 这一句搞出来的 URI 会导致异常。
网上查了一下:
https://en.delphipraxis.net/topic/1437-pdf-view-on-android/
LUri := TAndroidHelper.JFileToJURI(TJFile.JavaClass.init(StringToJString(AFileName)));因此,如果要播放 MP4,代码就是这样: Uri := TAndroidHelper.JFileToJURI(TJFile.JavaClass.init(StringToJString(AURI))); Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW); intent.setDataAndType(uri, StringToJstring('video/mp4')); Intent.setFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION);TAndroidHelper.Activity.startActivity(Intent); //pcplayer 2018-4-11
//打开PDF文件uses Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers, Androidapi.JNI.Net; procedure OpenPDF(const AFileName: string);var LIntent: JIntent; LUri: Jnet_Uri;begin LUri := TAndroidHelper.JFileToJURI(TJFile.JavaClass.init(StringToJString(AFileName))); LIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW); LIntent.setDataAndType(LUri, StringToJString('application/pdf')); LIntent.setFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION); TAndroidHelper.Activity.startActivity(LIntent);end;
相关阅读 >>
Delphi firedac 下的 sqlite [12] - 备忘录
Delphi applicationevents1 webbrowser1屏蔽右键菜单
更多相关阅读请进入《Delphi》频道 >>