Android: quelle est la clé pour obtenir la couleur d'arrière-plan du contact?

J'ai donc lu sur la création de la couleur d'arrière-plan générée automatiquement pour les contacts. Apparemment, il est basé sur un hashCode () d'une clé dans le contact. J'ai vu que le courrier électronique est utilisé comme clé, mais cela n'a aucun sens, car tous mes contacts ne comportent pas d'emails associés à ceux-ci et ceux qui ne sont pas tous de la même couleur.

En fin de compte, je souhaite pouvoir utiliser la couleur EXACT dans la carte du contact. De cette façon, l'icône que j'ai dans mon application a la même couleur d'arrière-plan que celle utilisée lorsque vous cliquez dessus et ouvrez la carte de contact à l'aide de l'option ACTION_VIEW.

  • Comment puis-je supprimer le bouton ExpandableListView?
  • Pourquoi utilisons-nous TaskStackBuilder?
  • IntentService ne montrera pas Toast
  • Comment puis-je récupérer les données de AsyncTasks doInBackground ()?
  • Créer un Arraylist of Objects
  • Téléchargez des fichiers et les stockez localement avec Phonegap / jQuery Mobile Android et iOS Apps
  • Alors, je me demande ce que j'ai besoin d'utiliser comme clé pour générer la même couleur générée par l'application de contacts Android, pour chaque contact individuel? Merci.

    PS. Voici les codes hexadécimaux que j'ai maintenant pour le palais des couleurs. Si quelqu'un pourrait répondre à la précision de cela aussi, je l'apprécierais vraiment. Merci.

    <array name="letter_tile_colors"> <item>#f16364</item> <item>#f58559</item> <item>#f9a43e</item> <item>#e4c62e</item> <item>#67bf74</item> <item>#59a2be</item> <item>#2093cd</item> <item>#ad62a7</item> </array> 

    Edit: Certaines personnes disent que c'est similaire à une autre réponse, la couleur de contact Android lollipop

    Le problème avec cette réponse est qu'il est incomplet. Il explique comment générer des couleurs de la même manière, mais je n'essaie pas seulement de générer des couleurs aléatoires. Je cherche à obtenir la couleur EXACTE que l'application de contacts par défaut utilise pour ce contact.

  • Les codes promotionnels d'achat dans l'application enfreignent la vérification du serveur distant?
  • Comment implémenter une boîte de dialogue comme truecaller dans Android
  • Android: un nouvel enregistrement de données est ajouté au mauvais contact
  • DrawMatching entre deux images - reconnaissance d'image
  • Obtenez minSdkVersion et targetSdkVersion à partir du fichier apk
  • Impossible de convertir de android.app.FragmentManager à android.support.v4.app.FragmentManager
  • 2 Solutions collect form web for “Android: quelle est la clé pour obtenir la couleur d'arrière-plan du contact?”

    À partir de Google ContactsCommon code source:

    L' identifiant est une chaîne unique et déterministe qui peut être utilisée pour identifier ce contact. Il s'agit généralement de la clé de recherche du contact, mais d'autres détails de contact peuvent également être utilisés, en particulier pour les contacts non locaux ou temporaires qui pourraient ne pas avoir une clé de recherche. Ceci permet de déterminer la couleur de la tuile. À partir de ContactPhotoManager .

    L'identifiant est utilisé LetterTileDrawable class pour sélectionner la couleur de la tuile (l'identifiant provient de la demande de contact).

     /** * Returns a deterministic color based on the provided contact identifier string. */ private int pickColor(final String identifier) { if (TextUtils.isEmpty(identifier) || mContactType == TYPE_VOICEMAIL) { return sDefaultColor; } // String.hashCode() implementation is not supposed to change across java versions, so // this should guarantee the same email address always maps to the same color. // The email should already have been normalized by the ContactRequest. final int color = Math.abs(identifier.hashCode()) % sColors.length(); return sColors.getColor(color, sDefaultColor); } 

    Les palettes sont définies dans le fichier colors.xml :

     <!-- Background colors for LetterTileDrawables. This set of colors is a subset of https://spec.googleplex.com/quantumpalette#extended which passes Google Accessibility Requirements for the color in question on white with >= 3.0 contrast. We used http://leaverou.github.io/contrast-ratio/#white-on-%23db4437 to double-check the contrast. These colors are also used by MaterialColorMapUtils to generate primary activity colors. --> <array name="letter_tile_colors"> <item>#DB4437</item> <item>#E91E63</item> <item>#9C27B0</item> <item>#673AB7</item> <item>#3F51B5</item> <item>#4285F4</item> <item>#039BE5</item> <item>#0097A7</item> <item>#009688</item> <item>#0F9D58</item> <item>#689F38</item> <item>#EF6C00</item> <item>#FF5722</item> <item>#757575</item> </array> <!-- Darker versions of letter_tile_colors, two shades darker. These colors are used for settings secondary activity colors. --> <array name="letter_tile_colors_dark"> <item>#C53929</item> <item>#C2185B</item> <item>#7B1FA2</item> <item>#512DA8</item> <item>#303F9F</item> <item>#3367D6</item> <item>#0277BD</item> <item>#006064</item> <item>#00796B</item> <item>#0B8043</item> <item>#33691E</item> <item>#E65100</item> <item>#E64A19</item> <item>#424242</item> </array> <!-- The default color used for tinting photos when no color can be extracted via Palette, this is Blue Grey 500 --> <color name="quickcontact_default_photo_tint_color">#607D8B</color> <!-- The default secondary color when no color can be extracted via Palette, this is Blue Grey 700 --> <color name="quickcontact_default_photo_tint_color_dark">#455A64</color> <color name="letter_tile_default_color">#cccccc</color> <color name="letter_tile_font_color">#ffffff</color> 

    J'espère que cela pourrait vous aider

      private static final int NUM_OF_TILE_COLORS = 8; private final TypedArray mColors; //initialize inside oncreate of your activity mColors = res.obtainTypedArray(R.array.letter_tile_colors);//array of colors you have //call in wherver you want, key is the name of the contact private int pickColor(String key) { // String.hashCode() is not supposed to change across java versions, so // this should guarantee the same key always maps to the same color final int color = Math.abs(key.hashCode()) % NUM_OF_TILE_COLORS; try { return mColors.getColor(color, Color.BLACK); } finally { mColors.recycle(); } } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.