<!---
# license: Licensed to the Apache Software Foundation (ASF) under one
#         or more contributor license agreements.  See the NOTICE file
#         distributed with this work for additional information
#         regarding copyright ownership.  The ASF licenses this file
#         to you under the Apache License, Version 2.0 (the
#         "License"); you may not use this file except in compliance
#         with the License.  You may obtain a copy of the License at
#
#           http://www.apache.org/licenses/LICENSE-2.0
#
#         Unless required by applicable law or agreed to in writing,
#         software distributed under the License is distributed on an
#         "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
#         KIND, either express or implied.  See the License for the
#         specific language governing permissions and limitations
#         under the License.
-->

# cordova-plugin-contacts

[![Build Status](https://travis-ci.org/apache/cordova-plugin-contacts.svg)](https://travis-ci.org/apache/cordova-plugin-contacts)

Questo plugin definisce un oggetto globale `navigator.contacts`, che fornisce l'accesso al database di contatti del dispositivo.

Anche se l'oggetto è associato con ambito globale del `navigator`, non è disponibile fino a dopo l'evento `deviceready`.

    document.addEventListener("deviceready", onDeviceReady, false);
    function onDeviceReady() {
        console.log(navigator.contacts);
    }
    

**Avviso**: raccolta e utilizzo dei dati di contatto solleva questioni di privacy importante. Politica sulla privacy dell'app dovrebbe discutere come app utilizza i dati di contatto e se è condiviso con altre parti. Informazioni di contatto sono considerate sensibile perché rivela le persone con cui una persona comunica. Pertanto, oltre alla politica di privacy dell'app, è fortemente consigliabile fornendo un preavviso di just-in-time prima app accede o utilizza i dati di contatto, se il sistema operativo del dispositivo non farlo già. Tale comunicazione deve fornire le informazioni stesse notate sopra, oltre ad ottenere l'autorizzazione (ad esempio, presentando scelte per **OK** e **No grazie**). Si noti che alcuni mercati app possono richiedere l'app per fornire un preavviso di just-in-time e ottenere l'autorizzazione dell'utente prima di accedere ai dati di contatto. Un'esperienza utente chiara e facile--capisce che circonda l'uso del contatto dati aiuta a evitare la confusione dell'utente e percepito un uso improprio dei dati di contatto. Per ulteriori informazioni, vedere la guida sulla Privacy.

## Installazione

Ciò richiede cordova 5.0 + (v 1.0.0 stabile corrente)

    cordova plugin add cordova-plugin-contacts
    

Versioni precedenti di cordova comunque possono installare tramite l'id **deprecato** (stantio v0.2.16)

    cordova plugin add org.apache.cordova.contacts
    

È anche possibile installare direttamente tramite url di repo (instabile)

    cordova plugin add https://github.com/apache/cordova-plugin-contacts.git
    

### Firefox OS stranezze

Creare **www/manifest.webapp** come descritto nel [Manifest Docs](https://developer.mozilla.org/en-US/Apps/Developing/Manifest). Aggiungi permisions rilevanti. C'è anche la necessità di modificare il tipo di webapp in "privilegiato" - [Manifest Docs](https://developer.mozilla.org/en-US/Apps/Developing/Manifest#type). **AVVERTENZA**: tutte le apps privilegiato applicare [Content Security Policy](https://developer.mozilla.org/en-US/Apps/CSP) che vieta script inline. Inizializzare l'applicazione in un altro modo.

    "type": "privileged",
    "permissions": {
        "contacts": {
            "access": "readwrite",
            "description": "Describe why there is a need for such permission"
        }
    }
    

### Stranezze di Windows

**Prima del Windows 10:** Eventuali contatti restituiti dai metodi `trovare` e `pickContact` sono readonly, quindi l'applicazione non può modificarli. Metodo `find` disponibile solo sui dispositivi Windows Phone 8.1.

**Windows 10 e sopra:** Contatti possono essere salvati e deposito di app locale contatti verranno salvate. Contatti possono anche essere eliminati.

### Stranezze di Windows 8

Windows 8 contatti sono readonly. Tramite i contatti di Cordova API non sono queryable/ricerche, si dovrebbe informare l'utente di scegliere un contatto come una chiamata a contacts.pickContact che aprirà l'app 'Persone' dove l'utente deve scegliere un contatto. Eventuali contatti restituiti sono readonly, quindi l'applicazione non può modificarli.

## Navigator.contacts

### Metodi

  * navigator.contacts.create
  * navigator.contacts.find
  * navigator.contacts.pickContact

### Oggetti

  * Contact
  * ContactName
  * ContactField
  * ContactAddress
  * ContactOrganization
  * ContactFindOptions
  * ContactError
  * ContactFieldType

## navigator.contacts.create

Il metodo `navigator.contacts.create` è sincrono e restituisce un nuovo oggetto di `Contact`.

Questo metodo non mantiene l'oggetto contatto nel database contatti dispositivo, per cui è necessario richiamare il metodo `Contact.save`.

### Piattaforme supportate

  * Android
  * BlackBerry 10
  * Firefox OS
  * iOS
  * Windows Phone 7 e 8

### Esempio

    var myContact = navigator.contacts.create({"displayName": "Test User"});
    

## navigator.contacts.find

Il metodo `navigator.contacts.find` in modo asincrono, esegue una query sul database di contatti del dispositivo e restituisce una matrice di oggetti `Contact`. Gli oggetti risultanti vengono passati alla funzione di callback `contactSuccess` specificata dal parametro **contactSuccess**.

Il parametro **contactFields** specifica i campi per essere utilizzato come un qualificatore di ricerca. Un parametro di lunghezza zero, **contactFields** non è valido e si traduce in `ContactError.INVALID_ARGUMENT_ERROR`. Un valore di **contactFields** di `"*"` ricerche campi tutti i contatti.

La stringa di **contactFindOptions.filter** può essere utilizzata come un filtro di ricerca quando una query sul database di contatti. Se fornito, una distinzione, corrispondenza parziale valore viene applicato a ogni campo specificato nel parametro **contactFields**. Se esiste una corrispondenza per *qualsiasi* dei campi specificati, viene restituito il contatto. Uso **contactFindOptions.desiredFields** parametro di controllo quale contattare la proprietà deve essere rispedito indietro.

### Parametri

  * **contactFields**: contattare campi da utilizzare come un qualificatore di ricerca. *(DOMString[])* [Required]

  * **contactSuccess**: funzione di callback successo richiamato con la matrice di oggetti contatto restituiti dal database. [Required]

  * **contactError**: funzione di callback di errore, viene richiamato quando si verifica un errore. [Facoltativo]

  * **contactFindOptions**: opzioni per filtrare navigator.contacts di ricerca. [Optional]
    
    I tasti sono:
    
      * **filter**: la stringa di ricerca utilizzata per trovare navigator.contacts. *(DOMString)* (Default: `""`)
    
      * **multiple**: determina se l'operazione di ricerca restituisce più navigator.contacts. *(Boolean)* (Default: `false`)
        
          * **desiredFields**: contattare i campi per essere tornato indietro. Se specificato, il risultante `contatto` oggetto solo caratteristiche valori per questi campi. *(DOMString[])* [Optional]

### Piattaforme supportate

  * Android
  * BlackBerry 10
  * Firefox OS
  * iOS
  * Windows Phone 7 e 8
  * Windows (Windows Phone 8.1 e Windows 10)

### Esempio

    function onSuccess(contacts) {
        alert('Found ' + contacts.length + ' contacts.');
    };
    
    function onError(contactError) {
        alert('onError!');
    };
    
    // find all contacts with 'Bob' in any name field
    var options      = new ContactFindOptions();
    options.filter   = "Bob";
    options.multiple = true;
    options.desiredFields = [navigator.contacts.fieldType.id];
    var fields       = [navigator.contacts.fieldType.displayName, navigator.contacts.fieldType.name];
    navigator.contacts.find(fields, onSuccess, onError, options);
    

### Stranezze di Windows

  * `__contactFields__`non è supportato, verrà ignorato. `find`metodo cercherà sempre di abbinare il nome, indirizzo email o numero di telefono di un contatto.

## navigator.contacts.pickContact

Il metodo `navigator.contacts.pickContact` lancia il contatto selettore per selezionare un singolo contatto. L'oggetto risultante viene passato alla funzione di callback `contactSuccess` specificata dal parametro **contactSuccess**.

### Parametri

  * **contactSuccess**: funzione di callback di successo viene richiamato con il singolo oggetto di contatto. [Richiesto]

  * **contactError**: funzione di callback di errore, viene richiamato quando si verifica un errore. [Facoltativo]

### Piattaforme supportate

  * Android
  * iOS
  * Windows Phone 8
  * Windows 8
  * Windows

### Esempio

    navigator.contacts.pickContact(function(contact){
            console.log('The following contact has been selected:' + JSON.stringify(contact));
        },function(err){
            console.log('Error: ' + err);
        });
    

## Contact

L'oggetto `Contact` rappresenta il contatto di un utente. Contatti possono essere creati, memorizzati o rimossi dal database di contatti dispositivo. Contatti possono anche essere estratto (singolarmente o in blocco) dal database richiamando il metodo `navigator.contacts.find`.

**Nota**: non tutti i campi di contatto sopra elencati sono supportati su ogni piattaforma del dispositivo. Consultare la sezione di *stranezze* su ogni piattaforma per dettagli.

### Proprietà

  * **ID**: un identificatore univoco globale. *(DOMString)*

  * **displayName**: il nome di questo contatto, adatto per la visualizzazione a utenti finali. *(DOMString)*

  * **nome**: un oggetto che contiene tutti i componenti di un nome di persone. *(ContactName)*

  * **Nickname**: un nome informale con cui affrontare il contatto. *(DOMString)*

  * **phoneNumbers**: una matrice di numeri di telefono del contatto. *(ContactField[])*

  * **email**: una matrice di indirizzi di posta elettronica del contatto. *(ContactField[])*

  * **indirizzi**: una matrice di indirizzi di contatto. *(ContactAddress[])*

  * **IMS**: una matrice di indirizzi IM tutto il contatto. *(ContactField[])*

  * **organizzazioni**: una matrice di organizzazioni di tutto il contatto. *(ContactOrganization[])*

  * **compleanno**: il compleanno del contatto. *(Data)*

  * **Nota**: una nota sul contatto. *(DOMString)*

  * **foto**: una matrice di foto del contatto. *(ContactField[])*

  * **categorie**: matrice di tutte le categorie definite dall'utente connesso con il contatto. *(ContactField[])*

  * **URL**: matrice di pagine web connesso con il contatto. *(ContactField[])*

### Metodi

  * **clone**: restituisce una nuova `Contact` oggetto che è una copia completa dell'oggetto chiamante, con la `id` proprietà impostata`null`.

  * **rimuovere**: rimuove il contatto dal database contatti dispositivo, altrimenti esegue un callback di errore con un `ContactError` oggetto.

  * **Salva**: salva un nuovo contatto nel database di contatti del dispositivo, o aggiorna un contatto esistente se esiste già un contatto con lo stesso **id** .

### Piattaforme supportate

  * Amazon fuoco OS
  * Android
  * BlackBerry 10
  * Firefox OS
  * iOS
  * Windows Phone 7 e 8
  * Windows 8
  * Windows

### Esempio di salvare

    function onSuccess(contact) {
        alert("Save Success");
    };
    
    function onError(contactError) {
        alert("Error = " + contactError.code);
    };
    
    // create a new contact object
    var contact = navigator.contacts.create();
    contact.displayName = "Plumber";
    contact.nickname = "Plumber";            // specify both to support all devices
    
    // populate some fields
    var name = new ContactName();
    name.givenName = "Jane";
    name.familyName = "Doe";
    contact.name = name;
    
    // save to device
    contact.save(onSuccess,onError);
    

### Esempio di clone

        // clone the contact object
        var clone = contact.clone();
        clone.name.givenName = "John";
        console.log("Original contact name = " + contact.name.givenName);
        console.log("Cloned contact name = " + clone.name.givenName);
    

### Rimuovere esempio

    function onSuccess() {
        alert("Removal Success");
    };
    
    function onError(contactError) {
        alert("Error = " + contactError.code);
    };
    
    // remove the contact from the device
    contact.remove(onSuccess,onError);
    

### Stranezze di Android 2. x

  * **categorie**: non è supportato sui dispositivi Android 2. x, restituendo`null`.

### BlackBerry 10 capricci

  * **ID**: assegnate dal dispositivo quando si salva il contatto.

### Capricci di FirefoxOS

  * **categorie**: parzialmente supportati. Campi **pref** e **tipo** stanno tornando`null`

  * **IMS**: non supportato

  * **foto**: non supportato

### iOS stranezze

  * **displayName**: non supportata su iOS, tornando `null` se non c'è nessun `ContactName` specificato, nel qual caso restituisce il nome composito, **soprannome** o `""` , rispettivamente.

  * **compleanno**: deve essere inserito come un JavaScript `Date` oggetto, allo stesso modo viene restituito.

  * **foto**: restituisce un URL del File dell'immagine, che viene memorizzato nella directory temporanea dell'applicazione. Contenuto della directory temporanea vengono rimossi quando l'applicazione termina.

  * **categorie**: questa proprietà non è attualmente supportata, restituendo`null`.

### Windows Phone 7 e 8 stranezze

  * **displayName**: quando si crea un contatto, il valore specificato per il parametro del nome di visualizzazione è diverso dal nome visualizzato Estratto quando trovare il contatto.

  * **URL**: quando si crea un contatto, gli utenti possono inserire e salvare più di un indirizzo web, ma solo uno è disponibile durante la ricerca del contatto.

  * **phoneNumbers**: non è supportata l'opzione *pref* . Il *tipo* non è supportato in un'operazione di *trovare* . Un solo `phoneNumber` è consentita per ogni *tipo*.

  * **email**: non è supportata l'opzione *pref* . Home e personal fa riferimento la stessa voce di posta elettronica. È consentito un solo ingresso per ogni *tipo*.

  * **indirizzi**: supporta solo lavoro e casa/personali *tipo*. Il riferimento principale e personale *tipo* la stessa voce di indirizzo. È consentito un solo ingresso per ogni *tipo*.

  * **organizzazioni**: solo uno è consentito e non supporta gli attributi *pref*, *tipo*e *dipartimento* .

  * **Nota**: non supportato, restituendo`null`.

  * **IMS**: non supportato, restituendo`null`.

  * **compleanni**: non supportato, restituendo`null`.

  * **categorie**: non supportato, restituendo`null`.

  * **remove**: metodo non è supportato

### Stranezze di Windows

  * **foto**: restituisce un URL del File dell'immagine, che viene memorizzato nella directory temporanea dell'applicazione.

  * **compleanni**: non supportato, restituendo`null`.

  * **categorie**: non supportato, restituendo`null`.

  * **remove**: metodo è supportato solo in Windows 10 o superiore.

## ContactAddress

L'oggetto `ContactAddress` memorizza le proprietà di un singolo indirizzo di un contatto. Un oggetto `Contact` può includere più di un indirizzo in una matrice `[] ContactAddress`.

### Proprietà

  * **pref**: impostare su `true` se questo `ContactAddress` contiene il valore dell'utente preferito. *(booleano)*

  * **tipo**: una stringa che indica il tipo di campo è, *casa* ad esempio. *(DOMString)*

  * **formattato**: indirizzo completo formattato per la visualizzazione. *(DOMString)*

  * **streetAddress**: l'indirizzo completo. *(DOMString)*

  * **località**: la città o località. *(DOMString)*

  * **regione**: lo stato o la regione. *(DOMString)*

  * **postalCode**: il codice postale o il codice postale. *(DOMString)*

  * **paese**: il nome del paese. *(DOMString)*

### Piattaforme supportate

  * Amazon fuoco OS
  * Android
  * BlackBerry 10
  * Firefox OS
  * iOS
  * Windows Phone 7 e 8
  * Windows 8
  * Windows

### Esempio

    // display the address information for all contacts
    
    function onSuccess(contacts) {
        for (var i = 0; i < contacts.length; i++) {
            for (var j = 0; j < contacts[i].addresses.length; j++) {
                alert("Pref: "         + contacts[i].addresses[j].pref          + "\n" +
                    "Type: "           + contacts[i].addresses[j].type          + "\n" +
                    "Formatted: "      + contacts[i].addresses[j].formatted     + "\n" +
                    "Street Address: " + contacts[i].addresses[j].streetAddress + "\n" +
                    "Locality: "       + contacts[i].addresses[j].locality      + "\n" +
                    "Region: "         + contacts[i].addresses[j].region        + "\n" +
                    "Postal Code: "    + contacts[i].addresses[j].postalCode    + "\n" +
                    "Country: "        + contacts[i].addresses[j].country);
            }
        }
    };
    
    function onError(contactError) {
        alert('onError!');
    };
    
    // find all contacts
    var options = new ContactFindOptions();
    options.filter = "";
    var filter = ["displayName", "addresses"];
    navigator.contacts.find(filter, onSuccess, onError, options);
    

### Stranezze di Android 2. x

  * **pref**: non supportato, tornando `false` su dispositivi Android 2. x.

### BlackBerry 10 capricci

  * **pref**: non è supportato sui dispositivi BlackBerry, restituendo`false`.

  * **tipo**: parzialmente supportati. Solo uno di *lavoro* e *casa* tipo indirizzi può essere memorizzato per ciascun contatto.

  * **formattato**: parzialmente supportati. Restituisce una concatenazione di tutti i campi Indirizzo BlackBerry.

  * **streetAddress**: supportato. Restituisce una concatenazione di BlackBerry **Indirizzo1** e **Indirizzo2** campi indirizzo.

  * **località**: supportato. Memorizzato nel campo indirizzo **città** di BlackBerry.

  * **regione**: supportato. Memorizzato nel campo indirizzo di **stateProvince** BlackBerry.

  * **postalCode**: supportato. Memorizzato nel campo dell'indirizzo **zipPostal** BlackBerry.

  * **paese**: supportato.

### Capricci di FirefoxOS

  * **formattato**: attualmente non supportato

### iOS stranezze

  * **pref**: non è supportato sui dispositivi iOS, restituendo`false`.

  * **formattato**: attualmente non supportati.

### Stranezze di Windows 8

  * **pref**: non supportato

### Stranezze di Windows

  * **pref**: non supportato

## ContactError

L'oggetto `ContactError` viene restituito all'utente tramite la funzione di callback `contactError` quando si verifica un errore.

### Proprietà

  * **codice**: uno dei codici di errore predefiniti elencati di seguito.

### Costanti

  * `ContactError.UNKNOWN_ERROR` (code 0)
  * `ContactError.INVALID_ARGUMENT_ERROR` (code 1)
  * `ContactError.TIMEOUT_ERROR` (code 2)
  * `ContactError.PENDING_OPERATION_ERROR` (code 3)
  * `ContactError.IO_ERROR` (code 4)
  * `ContactError.NOT_SUPPORTED_ERROR` (code 5)
  * `ContactError.PERMISSION_DENIED_ERROR` (code 20)

## ContactField

L'oggetto `ContactField` è un componente riutilizzabile che rappresenta Contatta campi genericamente. Ogni oggetto `ContactField` contiene una proprietà di `value`, `type` e `pref`. Un oggetto `Contact` memorizza diverse proprietà in matrici `[] ContactField`, come numeri di telefono e indirizzi email.

Nella maggior parte dei casi, esistono pre-determinati valori per l'attributo `type` di un oggetto **ContactField**. Ad esempio, un numero di telefono può specificare valori di **type** di *casa*, *lavoro*, *mobile*, *iPhone* o qualsiasi altro valore che è supportato dal database dei contatti su una piattaforma particolare dispositivo. Tuttavia, per il campo di **photo** del `Contacto`, il campo **type** indica il formato dell'immagine restituita: **url** quando il **value** di attributo contiene un URL per l'immagine fotografica, o *base64*, quando il **value** contiene una stringa con codifica base64 immagine.

### Proprietà

  * **tipo**: una stringa che indica il tipo di campo è, *casa* ad esempio. *(DOMString)*

  * **valore**: il valore del campo, ad esempio un telefono numero o indirizzo e-mail. *(DOMString)*

  * **pref**: impostare su `true` se questo `ContactField` contiene il valore dell'utente preferito. *(booleano)*

### Piattaforme supportate

  * Amazon fuoco OS
  * Android
  * BlackBerry 10
  * Firefox OS
  * iOS
  * Windows Phone 7 e 8
  * Windows 8
  * Windows

### Esempio

        // create a new contact
        var contact = navigator.contacts.create();
    
        // store contact phone numbers in ContactField[]
        var phoneNumbers = [];
        phoneNumbers[0] = new ContactField('work', '212-555-1234', false);
        phoneNumbers[1] = new ContactField('mobile', '917-555-5432', true); // preferred number
        phoneNumbers[2] = new ContactField('home', '203-555-7890', false);
        contact.phoneNumbers = phoneNumbers;
    
        // save the contact
        contact.save();
    

### Stranezze Android

  * **pref**: non supportato, restituendo`false`.

### BlackBerry 10 capricci

  * **tipo**: parzialmente supportati. Usato per i numeri di telefono.

  * **valore**: supportato.

  * **pref**: non supportato, restituendo`false`.

### iOS stranezze

  * **pref**: non supportato, restituendo`false`.

### Stranezze di Windows8

  * **pref**: non supportato, restituendo`false`.

### Stranezze di Windows

  * **pref**: non supportato, restituendo`false`.

## ContactName

Contiene diversi tipi di informazioni sul nome di un oggetto `Contact`.

### Proprietà

  * **formattato**: il nome completo del contatto. *(DOMString)*

  * **familyName**: cognome del contatto. *(DOMString)*

  * **givenName**: nome del contatto. *(DOMString)*

  * **middleName**: il nome del contatto medio. *(DOMString)*

  * **honorificPrefix**: prefisso del contatto (esempio *Mr* o *Dr*) *(DOMString)*

  * **honorificSuffix**: suffisso del contatto (esempio *Esq.*). *(DOMString)*

### Piattaforme supportate

  * Amazon fuoco OS
  * Android
  * BlackBerry 10
  * Firefox OS
  * iOS
  * Windows Phone 7 e 8
  * Windows 8
  * Windows

### Esempio

    function onSuccess(contacts) {
        for (var i = 0; i < contacts.length; i++) {
            alert("Formatted: "  + contacts[i].name.formatted       + "\n" +
                "Family Name: "  + contacts[i].name.familyName      + "\n" +
                "Given Name: "   + contacts[i].name.givenName       + "\n" +
                "Middle Name: "  + contacts[i].name.middleName      + "\n" +
                "Suffix: "       + contacts[i].name.honorificSuffix + "\n" +
                "Prefix: "       + contacts[i].name.honorificSuffix);
        }
    };
    
    function onError(contactError) {
        alert('onError!');
    };
    
    var options = new ContactFindOptions();
    options.filter = "";
    filter = ["displayName", "name"];
    navigator.contacts.find(filter, onSuccess, onError, options);
    

### Stranezze Android

  * **formattato**: parzialmente supportati e di sola lettura. Restituisce una concatenazione di `honorificPrefix` , `givenName` , `middleName` , `familyName` , e`honorificSuffix`.

### BlackBerry 10 capricci

  * **formattato**: parzialmente supportati. Restituisce una concatenazione di campi **firstName** e **lastName** BlackBerry.

  * **familyName**: supportato. Archiviato in campo **lastName** BlackBerry.

  * **givenName**: supportato. Archiviato in campo **firstName** BlackBerry.

  * **middleName**: non supportato, restituendo`null`.

  * **honorificPrefix**: non supportato, restituendo`null`.

  * **honorificSuffix**: non supportato, restituendo`null`.

### Capricci di FirefoxOS

  * **formattato**: parzialmente supportati e di sola lettura. Restituisce una concatenazione di `honorificPrefix` , `givenName` , `middleName` , `familyName` , e`honorificSuffix`.

### iOS stranezze

  * **formattato**: parzialmente supportati. Restituisce il nome composito di iOS, ma è di sola lettura.

### Stranezze di Windows 8

  * **formattato**: questo è l'unico nome proprietà ed è identico a `displayName` , e`nickname`

  * **familyName**: non supportato

  * **givenName**: non supportato

  * **middleName**: non supportato

  * **honorificPrefix**: non supportato

  * **honorificSuffix**: non supportato

### Stranezze di Windows

  * **formattato**: esso è identico al`displayName`

## ContactOrganization

L'oggetto `ContactOrganization` memorizza la proprietà di organizzazione di un contatto. Un oggetto `Contact` memorizza uno o più oggetti `ContactOrganization` in una matrice.

### Proprietà

  * **pref**: impostare su `true` se questo `ContactOrganization` contiene il valore dell'utente preferito. *(booleano)*

  * **tipo**: una stringa che indica il tipo di campo è, *casa* ad esempio. _(DOMString)

  * **nome**: il nome dell'organizzazione. *(DOMString)*

  * **dipartimento**: contratto lavora per il dipartimento. *(DOMString)*

  * **titolo**: titolo del contatto presso l'organizzazione. *(DOMString)*

### Piattaforme supportate

  * Android
  * BlackBerry 10
  * Firefox OS
  * iOS
  * Windows Phone 7 e 8
  * Windows (solo dispositivi Windows 8.1 e 8.1 di Windows Phone)

### Esempio

    function onSuccess(contacts) {
        for (var i = 0; i < contacts.length; i++) {
            for (var j = 0; j < contacts[i].organizations.length; j++) {
                alert("Pref: "      + contacts[i].organizations[j].pref       + "\n" +
                    "Type: "        + contacts[i].organizations[j].type       + "\n" +
                    "Name: "        + contacts[i].organizations[j].name       + "\n" +
                    "Department: "  + contacts[i].organizations[j].department + "\n" +
                    "Title: "       + contacts[i].organizations[j].title);
            }
        }
    };
    
    function onError(contactError) {
        alert('onError!');
    };
    
    var options = new ContactFindOptions();
    options.filter = "";
    filter = ["displayName", "organizations"];
    navigator.contacts.find(filter, onSuccess, onError, options);
    

### Stranezze di Android 2. x

  * **pref**: non supportato dai dispositivi Android 2. x, restituendo`false`.

### BlackBerry 10 capricci

  * **pref**: non supportato dai dispositivi BlackBerry, restituendo`false`.

  * **tipo**: non supportato dai dispositivi BlackBerry, restituendo`null`.

  * **nome**: parzialmente supportati. Il primo nome dell'organizzazione è memorizzato nel campo **azienda** BlackBerry.

  * **dipartimento**: non supportato, restituendo`null`.

  * **titolo**: parzialmente supportati. Il primo titolo di organizzazione è memorizzato nel campo **jobTitle** BlackBerry.

### Firefox OS stranezze

  * **pref**: non supportato

  * **tipo**: non supportato

  * **dipartimento**: non supportato

  * Campi **nome** e **titolo** memorizzato in **org** e **jobTitle**.

### iOS stranezze

  * **pref**: non è supportato sui dispositivi iOS, restituendo`false`.

  * **tipo**: non è supportato sui dispositivi iOS, restituendo`null`.

  * **nome**: parzialmente supportati. Il primo nome dell'organizzazione è memorizzato nel campo **kABPersonOrganizationProperty** iOS.

  * **dipartimento**: parzialmente supportati. Il primo nome del dipartimento è memorizzato nel campo **kABPersonDepartmentProperty** iOS.

  * **titolo**: parzialmente supportati. Il primo titolo è memorizzato nel campo **kABPersonJobTitleProperty** iOS.

### Stranezze di Windows

  * **pref**: non supportato, restituendo`false`.

  * **tipo**: non supportato, restituendo`null`.