我正在尝试自动(无需用户交互)可视化保存在C:\Myfolder\image.jpgUWP应用程序中的图像.我知道,这是一个热门话题和UWP应用程序只能访问一些"零件"的文件系统,但我也看了,有不同的解决方案来克服这个问题像这样
试试这个:
mainpage.cs
BitmapImage bitmap = new BitmapImage();
StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(@"C:\MyFolder");
StorageFile file = await folder.GetFileAsync("image.jpg");
using (var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read))
{
bitmap.SetSource(stream);
image0.Source = bitmap;
}
Run Code Online (Sandbox Code Playgroud)
在appxmanifest中添加这些行:
<Applications>
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="App">
<Extensions>
<uap:Extension Category="windows.fileTypeAssociation">
<uap:FileTypeAssociation Name="jpegfiles">
<uap:SupportedFileTypes>
<uap:FileType>.jpg</uap:FileType>
</uap:SupportedFileTypes>
</uap:FileTypeAssociation>
</uap:Extension>
</Extensions>
</Application>
</Applications>
<Capabilities>
<Capability Name="internetClient" />
<Capability Name="privateNetworkClientServer" />
<Capability Name="internetClientServer" />
<uap:Capability Name="enterpriseAuthentication" />
<uap4:Capability Name="userDataTasks" />
<DeviceCapability Name="microphone" />
</Capabilities>
Run Code Online (Sandbox Code Playgroud)
不幸的是,我总是得到一个错误: System.UnauthorizedAccessException: 'Access is denied.
我还尝试在Image对象中创建图像的直接路径,例如:
image0.Source = new BitmapImage(new Uri(@"C:\Myfolder\image.jpg"));
Run Code Online (Sandbox Code Playgroud)
在这种情况下,应用程序启动但它没有显示任何内容.
也许我错过了一些东西,或者我不明白如何设置文件访问权限.
实际上有一些方法可以在UWP中的磁盘上的任何位置访问本地文件.您可以声明受限制的broadFileSystemAccess功能(请参阅文档),这将允许您使用StorageFileAPI 访问磁盘上的任何路径(请注意,您仍然无法使用经典System.IOAPI 访问这些路径).如果启用,broadFileSystemAccess您的代码将按原样开始工作.
但是,要声明此功能,您的应用需要有充分的理由,因为它是对用户设备的潜在安全威胁.文件说:
这是一种受限制的能力.可在"设置">"隐私">"文件系统"中配置访问.由于用户可以随时在"设置"中授予或拒绝权限,因此应确保您的应用能够适应这些更改.如果您发现您的应用程序无权访问,您可以选择通过提供指向Windows 10文件系统访问和隐私文章的链接来提示用户更改设置.请注意,用户必须关闭应用,切换设置,然后重新启动应用.如果他们在应用程序运行时切换设置,平台将暂停您的应用程序,以便您可以保存状态,然后强制终止应用程序以应用新设置.在2018年4月更新中,权限的默认值为"开".在2018年10月更新中,默认为关闭.
如果您向声明此功能的商店提交应用程序,则需要提供有关您的应用程序需要此功能的原因以及打算如何使用它的其他说明.此功能适用于Windows.Storage命名空间中的API.有关如何在应用中启用此功能的示例,请参阅本文末尾的"示例"部分.
然而有一样的位置ApplicationData.Current.LocalFolder或ApplicationData.Current.RoamingFolder您可以无需额外的权限访问.您还可以声明类似musicLibrary等功能来访问库.
最后,您还可以让用户使用类似FileOpenPicker或类的对话框手动选择文件FileSavePicker,然后使用StorageApplicationPermissions.FutureAccessList- 继续授予对此文件的访问权限- 在此处阅读更多相关信息.
有关详细信息,请参阅文档.
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |