我正在开发iOS应用(使用Xamarin)。我尝试使用我的应用处理pdf文件并访问其内容。我将我的应用程序添加到了pdf文件的上下文菜单(“在...中打开”),例如此处https://i.stack.imgur.com/yowSw.png
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key>
<string>PDF</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSItemContentTypes</key>
<array>
<string>com.adobe.pdf</string>
</array>
</dict>
</array>
当我单击“在我的APP中打开”时,我的应用程序打开,并尝试访问文件的字节数组内容。
在SceneDelegate中,我添加了
[Export("scene:openURLContexts:")]
public void OpenUrlContexts(UIScene scene, NSSet<UIOpenUrlContext> urlContexts)
{
var path = urlContexts.AnyObject.Path;
var fileBytes = File.ReadAllBytes(path);
}
路径如下:文件:///private/var/mobile/Containers/Shared/AppGroup/XXX/File%20Provider%20Storage/sample.pdf
[不幸的是,阅读抛出异常:System.UnauthorizedAccessException:'对路径“ / private / var / mobile / Containers / Shared / AppGroup / XXX / File Provider Storage / sample.pdf”的访问被拒绝。'
如何访问以这种方式打开的文件的字节内容?
在Info.plist中添加以下代码
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
<string>public.composite-content</string>
</array>
<key>UTTypeIdentifier</key>
<string>com.adobe.pdf</string>
<key>UTTypeDescription</key>
<string>PDF</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.mime-type</key>
<string>application/pdf</string>
<key>public.filename-extension</key>
<array>
<string>pdf</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeIdentifier</key>
<string>com.microsoft.excel.xls</string>
<key>UTTypeDescription</key>
<string>Excel Document</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.mime-type</key>
<string>application/vnd.ms-excel</string>
<key>public.filename-extension</key>
<array>
<string>xls</string>
</array>
</dict>
</dict>
</array>
如果仍然无法使用,您可以共享您的样本,以便我可以自己进行测试。