Dela via


Åtkomst till Innehåll i hemgrupp

viktiga API:er

Få åtkomst till innehåll som lagras i användarens homegroup-mapp, inklusive bilder, musik och videor.

Förutsättningar

  • Förstå asynkron programmering för UWP-appar (Universal Windows Platform)

    Du kan lära dig hur du skriver asynkrona appar i C# eller Visual Basic, se Anropa asynkrona API:er i C# eller Visual Basic. Mer information om hur du skriver asynkrona appar i C++finns i Asynkron programmering i C++.

  • App-funktionsdeklarationer

    För att få åtkomst till HomeGroup-innehåll måste användarens dator ha en HomeGroup-konfiguration och appen måste ha minst en av följande funktioner: bilderBibliotek, musicLibraryeller videorBibliotek. När appen kommer åt mappen HomeGroup visas bara de bibliotek som motsvarar de funktioner som deklareras i appens manifest. Mer information finns i Behörigheter för filåtkomst.

    Anmärkning

     Innehållet i dokumentbiblioteket i en hemgrupp är inte synligt för din app oavsett vilka funktioner som deklareras i appens manifest och oavsett användarens delningsinställningar.  

  • Förstå hur du använder filväljare

    Du använder vanligtvis filväljaren för att komma åt filer och mappar i hemgruppen. Information om hur du använder filväljaren finns i Öppna filer och mappar med en väljare.

  • Förstå fil- och mappfrågor

    Du kan använda frågor för att räkna upp filer och mappar i hemgruppen. Mer information om fil- och mappfrågor finns i Räkna upp och fråga efter filer och mappar.

Öppna filväljaren på HomeGroup

Följ de här stegen för att öppna en instans av filväljaren som låter användaren välja filer och mappar från HomeGroup:

  1. Skapa och anpassa filväljaren

    Använd FileOpenPicker för att skapa filväljaren och ange sedan väljarens SuggestedStartLocation till PickerLocationId.HomeGroup. Eller ange andra egenskaper som är relevanta för dina användare och din app. Riktlinjer som hjälper dig att bestämma hur du anpassar filväljaren finns i Riktlinjer och checklista för filväljare

    I det här exemplet skapas en filväljare som öppnas i HomeGroup, innehåller filer av alla typer och visar filerna som miniatyrbilder:

    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. Visa filväljaren och bearbeta den plockade filen.

    När du har skapat och anpassat filväljaren låter du användaren välja en fil genom att anropa FileOpenPicker.PickSingleFileAsynceller flera filer genom att anropa FileOpenPicker.PickMultipleFilesAsync.

    I det här exemplet visas filväljaren så att användaren kan välja en fil:

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

Sök i HomeGroup efter filer

Det här avsnittet visar hur du hittar HomeGroup-objekt som matchar en frågeterm som tillhandahålls av användaren.

  1. Hämta frågetermen från användaren.

    Här får vi en frågeterm som användaren har angett i en TextBox--kontroll med namnet searchQueryTextBox:

    string queryTerm = this.searchQueryTextBox.Text;    
    
  2. Ange frågealternativ och sökfilter.

    Frågealternativ avgör hur sökresultaten sorteras, medan sökfiltret avgör vilka objekt som ingår i sökresultaten.

    I det här exemplet anges frågealternativ som sorterar sökresultaten efter relevans och sedan det ändrade datumet. Sökfiltret är frågetermen som användaren angav i föregående steg:

    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. Kör frågan och bearbeta resultatet.

    I följande exempel körs sökfrågan i HomeGroup och namnen på alla matchande filer sparas som en lista med strängar.

    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";
        }
    }    
    

Sök i HomeGroup efter en viss användares delade filer

Det här avsnittet visar hur du hittar HomeGroup-filer som delas av en viss användare.

  1. Hämta en samling homegroup-användare.

    Var och en av mapparna på första nivån i HomeGroup representerar en enskild HomeGroup-användare. Så om du vill hämta samlingen med HomeGroup-användare anropar du GetFoldersAsyncoch för att hämta HomeGroup-mapparna på högsta nivån.

    System.Collections.Generic.IReadOnlyList<Windows.Storage.StorageFolder> hgFolders =
        await Windows.Storage.KnownFolders.HomeGroup.GetFoldersAsync();    
    
  2. Hitta målanvändarens mapp och skapa sedan en filfråga som är begränsad till användarens mapp.

    I följande exempel itereras via de hämtade mapparna för att hitta målanvändarens mapp. Sedan anges frågealternativ för att hitta alla filer i mappen, sorterade först efter relevans och sedan efter det ändrade datumet. I exemplet skapas en sträng som rapporterar antalet filer som hittas, tillsammans med namnen på filerna.

    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";
                }
            }
        }
    }    
    

Strömma video från HomeGroup

Följ dessa steg för att strömma videoinnehåll från HomeGroup:

  1. Inkludera ett MediaElement i din app.

    Med en MediaElement- kan du spela upp ljud- och videoinnehåll i din app. Mer information om ljud- och videouppspelning finns i Skapa anpassade transportkontroller och Ljud, video och 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. Öppna en filväljare på HomeGroup och använd ett filter som innehåller videofiler i de format som appen stöder.

    Det här exemplet innehåller .mp4 och .wmv filer i filöppningsväljaren.

    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. Öppna användarens filval för läsåtkomst och ange filströmmen som källa förMediaElementoch spela sedan upp filen.

    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.
    }