Share via


Accesso al contenuto del Gruppo Home

API importanti

Puoi accedere al contenuto archiviato nella cartella Gruppo Home dell'utente, che include immagini, musica e video.

Prerequisiti

  • Familiarità con la programmazione asincrona per le app UWP (Universal Windows Platform)

    Per informazioni su come scrivere app asincrone in C# o Visual Basic, vedere Chiamare API asincrone in C# o Visual Basic. Per scoprire come scrivere app asincrone in C++, vedere Programmazione asincrona in C++.

  • Dichiarazioni di funzionalità delle app

    Per accedere al contenuto del Gruppo Home, nel computer dell’utente deve essere configurato un Gruppo Home e la tua app deve avere almeno una delle funzionalità seguenti: picturesLibrary, musicLibrary o videosLibrary. Quando l'app accede alla cartella Gruppo Home, visualizzerà solo le raccolte che corrispondono alle funzionalità dichiarate nel manifesto dell'app. Per altre informazioni, vedere Autorizzazioni accesso file.

    Nota

     Il contenuto nella raccolta di documenti di un Gruppo Home non è visibile per l’app, a prescindere dalle funzionalità dichiarate nel manifesto dell’app e dalle impostazioni di condivisione dell’utente.  

  • Conoscere e saper usare le selezioni file

    Normalmente puoi usare la selezione file per accedere ai file e alle cartelle nel Gruppo Home. Per informazioni sull’uso della selezione file, vedi Aprire file e cartelle con una selezione.

  • Familiarità con query su file e cartelle

    Le query vengono usate per enumerare i file e le cartelle nel Gruppo Home. Per informazioni sull’esecuzione di query su file e cartelle, vedi Enumerazione e ricerca di file e cartelle.

Aprire la selezione file per il Gruppo Home

Esegui questi passaggi per aprire un'istanza della selezione file che consenta all'utente di selezionare file e cartelle dal Gruppo Home:

  1. Creare e personalizzare la selezione file

    Usa FileOpenPicker per creare la selezione file, quindi imposta il percorso SuggestedStartLocation su PickerLocationId.HomeGroup. Oppure imposta le altre proprietà che sono pertinenti per i tuoi utenti e per la tua app. Per indicazioni su come personalizzare la selezione file, vedi Linee guida ed elenco di controllo per la selezione file.

    Questo esempio crea una selezione file che si apre specificamente per il Gruppo Home, include file di tutti i tipi e li visualizza come immagini di anteprima:

    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. Visualizzare la selezione file ed elaborare il file selezionato.

    Dopo avere creato e personalizzato la selezione file, consenti all’utente di selezionare un solo file chiamando FileOpenPicker.PickSingleFileAsync o più file chiamando FileOpenPicker.PickMultipleFilesAsync.

    L'esempio seguente mostra la selezione file che consente all'utente di selezionare un solo file:

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

Ricerca dei file nel Gruppo Home

Questa sezione spiega come trovare gli elementi del Gruppo Home che corrispondono a un termine della query specificata dall'utente.

  1. Recuperare il termine della query dall'utente.

    L’esempio seguente recupera un termine della query che l’utente ha inserito in un controllo TextBox, denominato searchQueryTextBox:

    string queryTerm = this.searchQueryTextBox.Text;    
    
  2. Impostare le opzioni della query e il filtro di ricerca.

    Le opzioni della query determinano l'ordine in cui vengono presentati i risultati della ricerca, mentre il filtro di ricerca determina quali elementi sono inclusi nei risultati.

    L'esempio seguente imposta le opzioni della query per ordinare i risultati della ricerca in base alla loro pertinenza e poi in base alla data di modifica. Il filtro di ricerca è il termine della query che l'utente ha inserito nel passaggio precedente:

    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. Eseguire la query ed elaborare i risultati.

    L'esempio seguente esegue la query di ricerca nel Gruppo Home e salva i nomi di tutti i file corrispondenti come un elenco di stringhe.

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

Cerca nel Gruppo Home i file condivisi di un particolare utente

Questa sezione illustra come trovare i file del Gruppo Home condivisi da un particolare utente.

  1. Recuperare una raccolta degli utenti del Gruppo Home.

    Ognuna delle cartelle di primo livello nel Gruppo Home rappresenta un singolo utente del Gruppo Home. Per recuperare la raccolta degli utenti del Gruppo Home, quindi, chiama GetFoldersAsync per recuperare le cartelle di primo livello del Gruppo Home.

    System.Collections.Generic.IReadOnlyList<Windows.Storage.StorageFolder> hgFolders =
        await Windows.Storage.KnownFolders.HomeGroup.GetFoldersAsync();    
    
  2. Trovare la cartella dell'utente di destinazione e quindi creare una query su file con la cartella di tale utente come ambito.

    L'esempio seguente esegue un'iterazione delle cartelle recuperate per trovare la cartella dell'utente specifico. Imposta quindi le opzioni della query per trovare tutti i file nella cartella, ordinati prima di tutto in base alla pertinenza e poi in base alla data di modifica. Questo esempio crea una stringa che indica il numero di file trovati insieme ai nomi dei file.

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

Acquisizione video dal Gruppo Home

Esegui questi passaggi per acquisire contenuto video dal Gruppo Home:

  1. Includere un elemento MediaElement nell'app.

    MediaElement consente di riprodurre contenuti audio e video nell’app. Per altre informazioni sulla riproduzione audio e video, vedi Creare controlli di trasporto personalizzati e Audio, video e fotocamera.

    <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. Aprire una selezione file per il Gruppo Home e applicare un filtro che includa i file video tra i formati supportati dall'app.

    L'esempio seguente include i formati mp4 e wmv nella selezione per l'apertura file.

    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. Aprire la selezione file dell’utente per l’accesso in lettura e quindi impostare il flusso di file come origine per l’elementoMediaElement, infine riprodurre il file.

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