Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

Code Sample: UWP mit freiem Dateizugriff

19.06.2018 (šŸ‘7937)

Beispiel Anwendung UWP mit freiem Dateizugriff via Capability broadFileSystemAccess  

Im Mai 2018 hat Microsoft die Entwicklungsplattform UWP Universal Windows Platform endlich sinnvoll erweitert.

Ab der Version ist 1803 kann mit den Einstellungen BroadFileSystemAccess auf die Dateien des aktuellen Users zugegriffen werden.

Das heiƟt, die Anwendung kann ohne zusƤtzliche User-Interaction einfach auf Dateien im C Pfad oder Datenpfad zugreifen.

Bisher musste hierzu immer ein manueller Datei-Dialog oder Folder-Dialog zur Freigabe geƶffnet werden.

Beispiel Anwendung:

Kopieren einer Datei nach freier Verzeichnis und Pfad-Angabe

Mainpage.xaml

In diesem Beispiel enthƤlt die Standardseite einfach einen Button und zwei beliebige Textfelder mit dem Pfad einer Datei

Mainpage.xaml

<Page

    x:Class="test_file_open.MainPage"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    xmlns:local="using:test_file_open"

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

    mc:Ignorable="d"

    Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <Grid>

        <Button x:Name="btnCopy" Content="Copy" HorizontalAlignment="Left" Height="99" Margin="94,140,0,0"

                VerticalAlignment="Top" Width="257" Click="btnCopy_Click"/>

        <TextBox x:Name="tbxFolder" HorizontalAlignment="Left" Height="84" Margin="88,276,0,0" Text="C:\_Daten\_temp\UWP_unknown" VerticalAlignment="Top" Width="603" FontSize="22"/>

        <TextBox x:Name="tbxFile" HorizontalAlignment="Left" Height="84" Margin="91,380,0,0" Text="Testfile.log" VerticalAlignment="Top" Width="603" FontSize="22"/>

    </Grid>

</Page>

MainPage.Xaml.cx

In C# Code wird der Pfad aus den Textfeldern ausgelesen. Hieraus wird der StorageFolder erstellt und hieraus die Datei als StorageFile geƶffnet und kopiert.

Achtung: genau hierzu ist die Einstellung mit Capability Name="broadFileSystemAccess  notwendig. Denn in dieser UWP App wird die Datei einfach geƶffnet ohne zusƤtzliche User-Interaction.

Es wird also kein manueller Freigabe Datei-Dialog notwendig !

        private async void  btnCopy_Click(object sender, RoutedEventArgs e)

        {

            StorageFolder folder = await StorageFolder.GetFolderFromPathAsync(tbxFolder.Text);

            StorageFile file = await folder.GetFileAsync(tbxFile.Text);

            StorageFile copyFile = await file.CopyAsync(folder, "Copied_File.txt", NameCollisionOption.ReplaceExisting);

        }

Package.appxmanifest

In der Datei Package.appxmanifest muss man die Package.IgnoreableNamespaces ergƤnzen und die Capabilities ergƤnzen

<Package ..

         xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"

         IgnorableNamespaces="uap mp rescap">

..

<Capabilities>

    ..

    <rescap:Capability Name="broadFileSystemAccess" />

  </Capabilities>

 

 

 

<?xml version="1.0" encoding="utf-8"?>

<Package xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"

         xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"

         xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"

         xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"

         IgnorableNamespaces="uap mp rescap">

  <Identity Name="c76c1dbf-c893-4f40-8f82-0934dfd31490" Publisher="CN=Raimund" Version="1.0.0.0" />

  <mp:PhoneIdentity PhoneProductId="c76c1dbf-c893-4f40-8f82-0934dfd31490" PhonePublisherId="00000000-0000-0000-0000-000000000000" />

  <Properties>

    <DisplayName>test_file_open</DisplayName>

    <PublisherDisplayName>Raimund</PublisherDisplayName>

    <Logo>Assets\StoreLogo.png</Logo>

  </Properties>

  <Dependencies>

    <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.0.0" MaxVersionTested="10.0.0.0" />

  </Dependencies>

  <Resources>

    <Resource Language="x-generate" />

  </Resources>

  <Applications>

    <Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="test_file_open.App">

      <uap:VisualElements DisplayName="test_file_open" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="test_file_open" BackgroundColor="transparent">

        <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png">

        </uap:DefaultTile>

        <uap:SplashScreen Image="Assets\SplashScreen.png" />

      </uap:VisualElements>

    </Application>

  </Applications>

 

  <Capabilities>

    <Capability Name="internetClient" />

    <uap:Capability Name="picturesLibrary" />

    <rescap:Capability Name="broadFileSystemAccess" />

  </Capabilities>

</Package>

Projekt Mindestversion

Notwendig hierzu ist die Version 1803 in den UWP Einstellungen

Projekt->Properties->Application

Targeting:

Target: Universal Windows

Target Version: Windows 10, version 1803 (10.0; Build 17134)