Schnellstart: Zugreifen auf den Inhalt von Heimnetzgruppen (HTML)

[ Dieser Artikel richtet sich an Windows 8.x- und Windows Phone 8.x-Entwickler, die Windows-Runtime-Apps schreiben. Wenn Sie für Windows 10 entwickeln, finden Sie weitere Informationen unter neueste Dokumentation]

Greifen Sie auf Inhalte zu, die sich im Heimnetzgruppenordner des Benutzers befinden, einschließlich Bildern, Musik und Videos.

Voraussetzungen

  • Kenntnisse in der asynchronen Programmierung für Windows-Runtime-Apps mit JavaScript

    In Schnellstart: Verwenden von Zusagen in JavaScript erfahren Sie, wie Sie asynchrone Apps erstellen.

  • Deklaration der App-Funktionen

    Damit auf Heimnetzgruppeninhalte zugegriffen werden kann, muss auf dem Computer des Benutzers eine Heimnetzgruppe eingerichtet sein, und Ihre App muss mindestens eine der folgenden Funktionen unterstützen: Bildbibliothek, Musikbibliothek oder Videobibliothek. Wenn Ihre App den Heimnetzgruppenordner abruft, sieht sie nur die Bibliotheken, die den im Manifest Ihrer App deklarierten Funktionen entsprechen. Weitere Informationen zu diesen Funktionen finden Sie in Deklaration der App-Funktionen.

    Hinweis  Inhalte der Dokumentenordner einer Heimnetzgruppe sind für Ihre App nicht sichtbar, unabhängig von den deklarierten Funktionen in ihrem Manifest und den Freigabeeinstellungen des Benutzers.

     

  • So wird's gemacht: Verwenden der Dateiauswahl

    Normalerweise verwenden Sie die Dateiauswahl, um auf Dateien und Ordner in der Heimnetzgruppe zuzugreifen. Weitere Informationen zur Verwendung der Dateiauswahl finden Sie in Schnellstart: Dateizugriff mit Dateiauswahl.

  • Datei- und Ordnerabfragen

    Sie können Abfragen dazu verwenden, Dateien und Ordner in der Heimnetzgruppe aufzulisten. Weitere Informationen zu Datei- und Ordnerabfragen erhalten Sie in Schnellstart: Programmgesteuerter Dateizugriff.

Öffnen der Dateiauswahl für die Heimnetzgruppe

Führen Sie die folgenden Schritte durch, um eine Instanz der Dateiauswahl zu öffnen, mit der Benutzer Dateien und Ordner in der Heimnetzgruppe auswählen können:

  1. Erstellen und Anpassen der Dateiauswahl

    Verwenden Sie fileOpenPicker zum Erstellen einer Dateiauswahl, und legen Sie dann den SuggestedStartLocation der Auswahl auf PickerLocationId.homeGroup fest. Legen Sie zudem weitere Eigenschaften fest, die für Benutzer und App relevant sind. Richtlinien zur Anpassung der Dateiauswahl erhalten Sie in Richtlinien und Prüfliste für die Dateiauswahl.

    In diesem Beispiel wird eine Dateiauswahl erstellt, die in der Heimnetzgruppe geöffnet wird, bei der Dateien jeglichen Typs angezeigt werden und die Dateien als Miniaturbilder erscheinen:

    var picker = new Windows.Storage.Pickers.FileOpenPicker();
    picker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.homeGroup;
    picker.fileTypeFilter.replaceAll(["*"]);
    picker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;
    
  2. Einblenden der Dateiauswahl

    Nachdem Sie die Dateiauswahl erstellt und angepasst haben, können Sie es den Benutzern durch Aufrufen von fileOpenPicker.pickSingleFileAsync ermöglichen, eine Datei auszuwählen. Oder lassen Sie ihn mehrere Dateien auswählen, indem Sie fileOpenPicker.pickMultipleFilesAsync aufrufen.

    In diesem Beispiel wird veranschaulicht, wie Sie die Dateiauswahl zum Auswählen einer Datei einblenden und wie die ausgewählte Datei für die Verarbeitung erfasst wird.

    picker.pickSingleFileAsync().then(function (file) {
        if (file) {
            // The app now has read/write access to the picked file.
            WinJS.log && WinJS.log("1 file selected: \"" + file.path + "\"", 
                "sample", "status");
    
            // If the returned file was an image, show it to the user.
            if ((".JPG" === file.fileType) || (".jpg" === file.fileType) || 
                (".JPEG" === file.fileType) || (".jpeg" === file.fileType) || 
                (".PNG" === file.fileType) || (".png" === file.fileType) || 
                (".BMP" === file.fileType) || (".bmp" === file.fileType)) {
                    document.getElementById("returnedImage").src = 
                        URL.createObjectURL(file, { oneTimeOnly: true });
                    document.getElementById("returnedImage").style.visibility = "visible";
            } else {
                // The returned file wasn't an image, so hide the container where it 
                // would have appeared.
                document.getElementById("returnedImage").style.visibility = "hidden";
            }
        }
    },
    
    function (file) {
        // An error occurred.
        WinJS.log && WinJS.log("File was not returned", "sample", "error");
    });
    

Durchsuchen der Heimnetzgruppe nach Dateien

In diesem Beispiel wird erläutert, wie Elemente in der Heimnetzgruppe gefunden werden können, die einem vom Benutzer angegebenen Abfrageausdruck entsprechen.

  1. Rufen Sie den Abfrageausdruck vom Benutzer ab.

    Hier erhalten wir einen Abfrageausdruck, den der Benutzer in ein Eingabefeld eingegeben hat:

    var query = document.getElementById("queryString").value;
    
  2. Legen Sie die Abfrageoptionen und Suchfilter fest.

    Abfrageoptionen bestimmen, wie die Suchergebnisse sortiert werden, während durch den Suchfilter festgelegt wird, welche Elemente in den Suchergebnissen erscheinen.

    In diesem Beispiel werden Abfrageoptionen festgelegt, die die Suchergebnisse nach Relevanz und dem Änderungsdatum sortieren. Beim Suchfilter handelt es sich um den Abfrageausdruck, den der Benutzer im vorherigen Schritt eingegeben hat:

    var options = new Windows.Storage.Search.QueryOptions(
        Windows.Storage.Search.CommonFileQuery.orderBySearchRank, ["*"]);
    options.userSearchFilter = query;
    
    • Führen Sie die Abfrage aus und verarbeiten Sie die Ergebnisse.

      Im folgenden Beispiel wird eine Suchabfrage ausgeführt, und die Namen aller passenden Dateien werden in einer Liste mit Zeichenfolgen gespeichert.

      try {
          var queryResult = 
              Windows.Storage.KnownFolders.homeGroup.createFileQueryWithOptions(options);
      
          queryResult.getFilesAsync().then(function (files) {
              // If no matching files were found, show appropriate output and turn 
              // off the progress ring.
              if (files.size === 0) {
                  WinJS.log && WinJS.log("No files found for \"" + query + "\"", 
                      "sample", "status");
                  document.getElementById("searchProgress").style.visibility = "hidden";
              }
      
              // We found matching files. Show them and turn off the progress ring.
              else {
                  var outputString = (files.size === 1) ? 
                      (files.size + " file found\n") : (files.size + " files found\n");
                  files.forEach(function (file) {
                      outputString = outputString.concat(file.name, "\n");
                  });
                  WinJS.log && WinJS.log(outputString, "sample", "status");
                  document.getElementById("searchProgress").style.visibility = "hidden";
              }
          });
      }
      catch (e) {
          // An error occurred. Show and log the error.
          document.getElementById("searchProgress").style.visibility = "hidden";
          WinJS.log && WinJS.log(e.message, "sample", "error");
      }
      

Durchsuchen der Heimnetzgruppe nach den freigegebenen Dateien eines bestimmten Benutzers

In diesem Abschnitt erfahren Sie, wie Sie nach Heimnetzgruppendateien suchen, die von einem bestimmten Benutzer freigegeben wurden.

  1. Stellen Sie eine Sammlung von Heimnetzgruppenbenutzern zusammen.

    Jeder Ordner auf oberster Ebene in der Heimnetzgruppe repräsentiert einen bestimmten Heimnetzgruppenbenutzer. Um die Sammlung der Heimnetzgruppenbenutzer zu erhalten, rufen Sie also GetFoldersAsync auf, um die Heimnetzgruppenordner der obersten Ebene abzurufen. Suchen Sie dann nach dem Ordner des Zielbenutzers.

    
    var hg = Windows.Storage.KnownFolders.homeGroup;
    hg.getFoldersAsync().then(function (users) {
        users.forEach(function (user) {
    
        // TODO: Do something with the user name. 
    
        });
    }
    
  2. Erstellen Sie dazu eine Dateiabfrage, die auf den Ordner dieses Benutzers eingegrenzt ist.

    Im folgenden Beispiel werden Abfrageoptionen festgelegt, um die Suchergebnisse primär nach Relevanz und sekundär nach dem Änderungsdatum zu sortieren. Die Abfrageoptionen werden dann auf eine Suchabfrage angewendet, die auf einen einzelnen Benutzer eingegrenzt ist.

    var options = new Windows.Storage.Search.QueryOptions(
        Windows.Storage.Search.CommonFileQuery.orderBySearchRank, ["*"]);
    var query = user.createFileQueryWithOptions(options);
    
  3. Führen Sie die Abfrage aus, und verarbeiten Sie die Ergebnisdateien.

    In diesem Beispiel wird die Suchabfrage ausgeführt, und die Namen der Dateien, die mit dem speziellen Benutzer übereinstimmen, werden in einer Liste mit Zeichenfolgen gespeichert.

    query.getFilesAsync().then(function (files) {
    
        // If we don't find any shared files for the specified user, 
        // hide the progress indicator and notify the user. 
        if (files.size === 0) {
            document.getElementById("searchProgress").style.visibility = "hidden";
    
            // In the following line, userToSearch is a name specified by
            // the app user.
            outputString = "No files shared by " + userToSearch + ""; 
        }
    
        // We found shared files for this user. Hide the progress indicator
        // and process the files.  
        else {
            document.getElementById("searchProgress").style.visibility = "hidden";
            outputString = (files.size === 1) ? 
                (files.size + " file found\n") : (files.size + " files shared by ");
            outputString = outputString.concat(userToSearch, "\n");
            files.forEach(function (file) {
                outputString = outputString.concat(file.name, "\n");
            });
        }
    });
    

Streamen von Videos aus der Heimnetzgruppe

Gehen Sie wie folgt vor, um Videoinhalte aus der Heimnetzgruppe zu streamen:

  1. Einbetten eines Videoelements in eine App-HTML-Seite.

    Das video-Element gibt Videoinhalte an, die in Ihrer App abgespielt werden sollen.

    <div data-win-control="SdkSample.ScenarioOutput">
        <video id="player" height="338" width="600" controls style="visibility: hidden">Unable to play video file</video>
    </div>
    
  2. Öffnen Sie eine Dateiauswahl für die Heimnetzgruppe und wenden Sie einen Filter an, der alle Dateien ausschließt, bei denen es sich nicht um Videodateiformate handelt, die Ihre App unterstützt.

    In diesem Beispiel werden MP4- und WMV-Dateien für die Dateiauswahl festgelegt.

    var picker = new Windows.Storage.Pickers.FileOpenPicker();
    picker.viewMode = Windows.Storage.Pickers.PickerViewMode.thumbnail;
    picker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.homeGroup;
    picker.fileTypeFilter.replaceAll([".mp4", ".wmv"]);
    
  3. Wandeln Sie die Dateiauswahl des Benutzers in eine URL um, und legen Sie diese URL als Quelle für das Videoelement fest.

    Im folgenden Beispiel wird das Videoelement abgerufen und initialisiert, sodass es unsichtbar und angehalten ist. Nachdem der Benutzer eine Videodatei ausgewählt hat, wird im Beispiel die URL der Datei abgerufen, als Quelle für das video-Element festgelegt, das Videoelement eingeblendet und die Wiedergabe des Videos gestartet.

    var vidPlayer = document.getElementById("player");
    vidPlayer.style.visibility = "hidden";
    vidPlayer.pause();
    picker.pickSingleFileAsync().then(function (file) {
        if (file) {
            // The video tag has built in capabilities to stream the video over 
            // the network.
            vidPlayer.src = URL.createObjectURL(file, { oneTimeOnly: true });
            vidPlayer.style.visibility = "visible";
            vidPlayer.play();
        }
    },
    function (file) {
        WinJS.log && WinJS.log("File was not returned", "sample", "error");
    });
    

Zusammenfassung

Sie sollten nun damit vertraut sein, wie Sie auf Inhalte in der Heimnetzgruppe zugreifen.

Verwandte Themen

App-Beispiel für Heimnetzgruppen

Zugreifen auf Daten und Dateien

Schnellstart: Dateizugriff mit Dateiauswahl

Schnellstart: Programmgesteuerter Dateizugriff

Homepage für App-Beispiele

Referenz

Windows.Storage.KnownFolders class