Udostępnij za pomocą


Uzyskiwanie dostępu do zawartości grupy głównej

ważne interfejsy API

Uzyskaj dostęp do zawartości przechowywanej w folderze HomeGroup użytkownika, w tym zdjęcia, muzykę i filmy wideo.

Wymagania wstępne

  • Omówienie programowania asynchronicznego dla aplikacji platformy uniwersalnej systemu Windows (UWP)

    Aby dowiedzieć się, jak pisać aplikacje asynchroniczne w języku C# lub Visual Basic, zobacz Wywoływanie asynchronicznych interfejsów API w języku C# lub Visual Basic. Aby dowiedzieć się, jak pisać aplikacje asynchroniczne w języku C++, zobacz Programowanie asynchroniczne w języku C++.

  • deklaracje możliwości aplikacji

    Aby uzyskać dostęp do zawartości Grupy głównej, komputer użytkownika musi mieć skonfigurowaną grupę domową, a aplikacja musi mieć co najmniej jedną z następujących funkcji: picturesLibrary, musicLibrarylub videosLibrary. Gdy aplikacja uzyskuje dostęp do folderu HomeGroup, zobaczy tylko biblioteki, które odpowiadają możliwościom zadeklarowanych w manifeście aplikacji. Aby dowiedzieć się więcej, zobacz Uprawnienia dostępu do plików.

    Uwaga / Notatka

     Zawartość w bibliotece Dokumenty Grupy domowej, niezależnie od możliwości zadeklarowanych w manifeście aplikacji oraz ustawień udostępniania użytkownika, nie jest widoczna dla twojej aplikacji.  

  • Dowiedz się, jak używać selektorów plików

    Zazwyczaj selektor plików służy do uzyskiwania dostępu do plików i folderów w grupie głównej. Aby dowiedzieć się, jak używać selektora plików, zobacz Otwórz pliki i foldery przy użyciu selektora.

  • Omówienie zapytań dotyczących plików i folderów

    Zapytania umożliwiają wyliczanie plików i folderów w grupie głównej. Aby dowiedzieć się więcej o zapytaniach dotyczących plików i folderów, zobacz Wyliczanie i wykonywanie zapytań dotyczących plików i folderów.

Otwórz selektor plików w grupie głównej

Wykonaj następujące kroki, aby otworzyć wystąpienie selektora plików, które umożliwia użytkownikowi wybranie plików i folderów z grupy głównej:

  1. Tworzenie i dostosowywanie selektora plików

    Użyj FileOpenPicker do utworzenia selektora plików, a następnie ustaw lokalizację początkową selektora SuggestedStartLocation na PickerLocationId.HomeGroup. Możesz też ustawić inne właściwości, które są istotne dla użytkowników i aplikacji. Aby uzyskać wskazówki ułatwiające podjęcie decyzji o sposobie dostosowywania selektora plików, zobacz wskazówki i listę kontrolną selektorów plików

    W tym przykładzie tworzony jest selektor plików, który zostanie otwarty w grupie głównej, zawiera pliki dowolnego typu i wyświetla pliki jako obrazy miniatur:

    Windows.Storage.Pickers.FileOpenPicker picker = new Windows.Storage.Pickers.FileOpenPicker();
    picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
    picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.HomeGroup;
    picker.FileTypeFilter.Clear();
    picker.FileTypeFilter.Add("*");
    
  2. Pokaż selektor plików i przetwórz wybrany plik.

    Po utworzeniu i dostosowaniu selektora plików pozwól użytkownikowi wybrać jeden plik, wywołując metodę FileOpenPicker.PickSingleFileAsynclub wiele plików, wywołując FileOpenPicker.PickMultipleFilesAsync.

    W tym przykładzie zostanie wyświetlony selektor plików umożliwiający użytkownikowi wybranie jednego pliku:

    Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
    
    if (file != null)
    {
        // Do something with the file.
    }
    else
    {
        // No file returned. Handle the error.
    }   
    

Wyszukaj pliki w Grupie domowej

W tej sekcji pokazano, jak znaleźć elementy grupy głównej zgodne z terminem zapytania dostarczonym przez użytkownika.

  1. Pobierz termin zapytania od użytkownika.

    W tym miejscu otrzymujemy termin zapytania wprowadzony przez użytkownika do kontrolki TextBox o nazwie searchQueryTextBox:

    string queryTerm = this.searchQueryTextBox.Text;    
    
  2. Ustaw opcje zapytania i filtr wyszukiwania.

    Opcje zapytania określają sposób sortowania wyników wyszukiwania, podczas gdy filtr wyszukiwania określa, które elementy są zawarte w wynikach wyszukiwania.

    W tym przykładzie ustawiamy opcje zapytania, które sortuje wyniki wyszukiwania według istotności, a następnie data modyfikacji. Filtr wyszukiwania to termin zapytania wprowadzony przez użytkownika w poprzednim kroku:

    Windows.Storage.Search.QueryOptions queryOptions =
            new Windows.Storage.Search.QueryOptions
                (Windows.Storage.Search.CommonFileQuery.OrderBySearchRank, null);
    queryOptions.UserSearchFilter = queryTerm.Text;
    Windows.Storage.Search.StorageFileQueryResult queryResults =
            Windows.Storage.KnownFolders.HomeGroup.CreateFileQueryWithOptions(queryOptions);    
    
  3. Uruchom zapytanie i przetwórz wyniki.

    Poniższy przykład uruchamia zapytanie wyszukiwania w grupie głównej i zapisuje nazwy wszystkich pasujących plików jako listę ciągów.

    System.Collections.Generic.IReadOnlyList<Windows.Storage.StorageFile> files =
        await queryResults.GetFilesAsync();
    
    if (files.Count > 0)
    {
        outputString += (files.Count == 1) ? "One file found\n" : files.Count.ToString() + " files found\n";
        foreach (Windows.Storage.StorageFile file in files)
        {
            outputString += file.Name + "\n";
        }
    }    
    

Przeszukaj grupę domową pod kątem udostępnionych plików określonego użytkownika

W tej sekcji pokazano, jak znaleźć pliki grupy głównej, które są współużytkowane przez określonego użytkownika.

  1. Pobierz kolekcję użytkowników HomeGroup.

    Każdy z folderów pierwszego poziomu w grupie głównej reprezentuje pojedynczego użytkownika grupy domowej. Aby uzyskać kolekcję użytkowników Grupy domowej, wywołaj GetFoldersAsync, aby pobrać foldery Grupy domowej najwyższego poziomu.

    System.Collections.Generic.IReadOnlyList<Windows.Storage.StorageFolder> hgFolders =
        await Windows.Storage.KnownFolders.HomeGroup.GetFoldersAsync();    
    
  2. Znajdź folder użytkownika docelowego, a następnie utwórz zapytanie o zakresie pliku w folderze tego użytkownika.

    Poniższy przykład iteruje za pośrednictwem pobranych folderów, aby znaleźć folder użytkownika docelowego. Następnie ustawia opcje zapytania, aby znaleźć wszystkie pliki w folderze, posortowane najpierw według istotności, a następnie według daty modyfikacji. Przykład tworzy ciąg, który raportuje liczbę znalezionych plików wraz z nazwami plików.

    bool userFound = false;
    foreach (Windows.Storage.StorageFolder folder in hgFolders)
    {
        if (folder.DisplayName == targetUserName)
        {
            // Found the target user's folder, now find all files in the folder.
            userFound = true;
            Windows.Storage.Search.QueryOptions queryOptions =
                new Windows.Storage.Search.QueryOptions
                    (Windows.Storage.Search.CommonFileQuery.OrderBySearchRank, null);
            queryOptions.UserSearchFilter = "*";
            Windows.Storage.Search.StorageFileQueryResult queryResults =
                folder.CreateFileQueryWithOptions(queryOptions);
            System.Collections.Generic.IReadOnlyList<Windows.Storage.StorageFile> files =
                await queryResults.GetFilesAsync();
    
            if (files.Count > 0)
            {
                string outputString = "Searched for files belonging to " + targetUserName + "'\n";
                outputString += (files.Count == 1) ? "One file found\n" : files.Count.ToString() + " files found\n";
                foreach (Windows.Storage.StorageFile file in files)
                {
                    outputString += file.Name + "\n";
                }
            }
        }
    }    
    

Strumieniuj wideo z grupy domowej

Wykonaj następujące kroki, aby przesłać strumieniowo zawartość wideo z grupy głównej:

  1. uwzględnij element MediaElement w aplikacji.

    MediaElement umożliwia odtwarzanie treści audio i wideo w aplikacji. Aby uzyskać więcej informacji na temat odtwarzania audio i wideo, zobacz Utwórz niestandardowe elementy sterujące transportem oraz Dźwięk, wideo i kamera.

    <Grid x:Name="Output" HorizontalAlignment="Left" VerticalAlignment="Top" Grid.Row="1">
        <MediaElement x:Name="VideoBox" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0" Width="400" Height="300"/>
    </Grid>    
    
  2. Otwórz selektor plików w grupie głównej i zastosuj filtr zawierający pliki wideo w formatach, które obsługuje aplikacja.

    Ten przykład obejmuje pliki .mp4 i .wmv w selektorze pliku otwartego.

    Windows.Storage.Pickers.FileOpenPicker picker = new Windows.Storage.Pickers.FileOpenPicker();
    picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
    picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.HomeGroup;
    picker.FileTypeFilter.Clear();
    picker.FileTypeFilter.Add(".mp4");
    picker.FileTypeFilter.Add(".wmv");
    Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();   
    
  3. Otwórz wybór pliku dokonany przez użytkownika, aby uzyskać dostęp do odczytu, ustaw strumień pliku jako źródło dlaMediaElement, a następnie odtwórz plik.

    if (file != null)
    {
        var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);
        VideoBox.SetSource(stream, file.ContentType);
        VideoBox.Stop();
        VideoBox.Play();
    }
    else
    {
        // No file selected. Handle the error here.
    }