Xamarin ios使用文件路径打开Acrobat阅读器

时间:2018-12-10 09:20:56

标签: ios xamarin

此代码打开acrobat阅读器

var url = new NSUrl($"com.adobe.adobe-reader://");
UIApplication.SharedApplication.OpenUrl(url);

我试图为此提供文件路径,但出现错误

var url = new NSUrl($"com.adobe.adobe-reader://{filepath}");

var url = new NSUrl($"com.adobe.adobe-reader:{filepath}");

1 个答案:

答案 0 :(得分:1)

我不确定您是否可以使用此方法直接在另一个应用程序中打开文件。相反,我认为您需要使用UIDocumentInteractionController打开一个弹出窗口,允许用户选择要打开PDF的应用程序。因此,请尝试以下操作:

NSUrl adobeUrl = new NSUrl($"com.adobe.adobe-reader:");
NSUrl fileUrl = NSUrl.FromFilename(filePath);
UIDocumentInteractionController docController = UIDocumentInteractionController.FromUrl(fileUrl);
if (UIApplication.SharedApplication.CanOpenUrl(adobeUrl))
{
    docController.PresentOpenInMenu(this.View.Frame, this.View, true);
}
else
{
    // throw error
}

此外,您需要将Adobe Reader URL方案添加到Info.plist。在文本编辑器中打开Info.plist并输入以下内容:

    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>com.adobe.adobe-reader</string>
    </array>

在最后一个标记之前,例如

<plist version="1.0">
<dict>
    ...
    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>com.adobe.adobe-reader</string>
    </array>
</dict>
</plist>

否则,您将无法通过CanOpenUrl测试,因此没有发生任何事情……尽管如果您查看了Application输出,iOS确实发送了一条消息,您需要执行此操作,例如:

-canOpenURL: failed for URL: "com.adobe.adobe-reader:" - error: "This app is not allowed to query for scheme com.adobe.adobe-reader"

我相信,要使var url = new NSUrl($"com.adobe.adobe-reader://{filepath}");之类的东西能够正常工作,该文件实际上实际上已经在Adobe Acrobat的文件容器中。有关更多信息,请参见此SO帖子:https://stackoverflow.com/a/21913788/2913599 [注意:即使Adobe Acrobat的文件中已有pdf,我也无法使用此方法]