我希望在Android上实现类似ShellExcute()
的内容。
我想使用Intent
在外部应用中打开文件。
我认为在测试时效果很好,但对于xlsx
,ppt
和pdf
扩展程序,我的默认Google应用程序(电子表格,演示文稿,驱动PDF查看器)未收到文件。
Google应用中的图片和图库没有问题。
所以,如果我得到MIME-Type并且没有应用程序,我的代码会引发异常:
我可以处理异常,但即使我将MIME类型设置为*/*
,Google应用也不会显示在选择列表中。
这就是为什么我有一个基本的Google应用程序,它迫使用户安装第三方应用程序。
我应该如何处理Google应用以获取Intent
?
当我在设备上使用ES文件资源管理器打开相应的文件时,这些Google应用程序运行良好。
在测试我的设备和模拟器时,同样会出现此问题。
以下是我测试的示例代码:
uses
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNI.JavaTypes,
Androidapi.Helpers,
System.IOUtils,
Androidapi.JNI.Webkit;
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
var
Intent: JIntent;
filename: String;
t: JString;
begin
filename := Edit1.text;
Intent := TJIntent.Create;
// Get MIME Type
t := TJMimeTypeMap.JavaClass.getSingleton.getMimeTypeFromExtension
(StringToJString (StringReplace (TPath.GetExtension(filename), '.', '', [])));
if t = nil then
t := StringToJString('*/*');
Intent.setAction(TJIntent.JavaClass.ACTION_VIEW);
Intent.setDataAndType(StrToJURI(TPath.GetPublicPath + PathDelim + filename), t);
SharedActivity.startActivity(Intent);
end;