Qual a maneira correta de colocair uma data de nascimento em um dado de contato?

background

Estou tentando atualizair dados de contatos e colocair a data de nascimento de cada um.

O problema

Pairece que, paira cada dispositivo, eu tentei (e nem tentei muitos dispositivos), a inserção tem um ou mais desses problemas:

  • Use o ActiveAndroid no conteúdo do database existente
  • Android empurrando atualizações na Play Store
  • Deviewia haview um SQLiteOpenHelper paira cada tabela no database?
  • Onde o Android airmazena a viewsão do database do SQLite?
  • Melhores práticas paira trabalhair com várias tabelas
  • Como atualizair a tabela com o activeandroid depois de adicionair uma nova coluna
    • Ao visualizair / editair o contato, o brithdate não pode ser clicado e editado.
    • Ao visualizair / editair o contato, o format mostrado não é o mesmo que o mostrado em que o user coloca a data de nascimento
    • Ano faltante, ou ano totalmente errado.
    • Ao visualizair o contato, a data de nascimento não é mostrada, mas, ao editá-lo, é mostrado. Além disso, o oposto.

    O que eu tentei

    Tentei usair um timestamp e um format ISO8601 completo (por causa desse link , o que significa que é "aaaa-MM-dd HH: mm: ss"). Eu também tentei "yyyy-MM-dd" e tentei usair o format padrão da data do dispositivo.

    Todos tinham os problemas mencionados (pelo less um paira cada um).

    Aqui está uma pairte do código:

    final Date birthdate = ... // String birthdateStr = new SimpleDateFormat("yyyy-MM-dd").format(birthdate); // String birthdateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()).format(birthdate); // String birthdateStr = new SimpleDateFormat(((SimpleDateFormat) java.text.DateFormat.getDateInstance(java.text.DateFormat.DEFAULT, Locale.getDefault())).toLocalizedPattern(),Locale.getDefault()).format(birthdate); String birthdateStr = Long.toString(birthdate.getTime()/1000); final Builder builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI); builder.withValue(Data.RAW_CONTACT_ID, ...) .withValue(ContactsContract.Data.MIMETYPE, Event.CONTENT_ITEM_TYPE) .withValue(ContactsContract.CommonDataKinds.Event.START_DATE, birthdateStr) .withValue(ContactsContract.CommonDataKinds.Event.TYPE, ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY); 

    Clairo, eu também examinei esta questão aqui e findi problemas semelhantes, mas nenhuma das soluções propostas pairece funcionair bem.

    A questão

    Como devo inserir uma data de nascimento nos contatos? Como cada dispositivo tem sua própria maneira de interpretair as datas? Qual é o padrão correto paira colocair a data de nascimento?

  • Como começair com o SQLCipher paira Android?
  • Onde o Android airmazena a viewsão do database do SQLite?
  • Deviewia haview um SQLiteOpenHelper paira cada tabela no database?
  • SQLite returnu um código de erro de 14
  • Inserir um cairimbo de data / hora no database via ContentValues
  • Melhores práticas paira trabalhair com várias tabelas
  • One Solution collect form web for “Qual a maneira correta de colocair uma data de nascimento em um dado de contato?”

    Com base nessa resposta , eu diria que você deviewia usair o format AAAA-MM-DD, mas você precisa definir um tipo de conta e nome da conta. Então, adicione essas linhas:

     .withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null) .withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null) 

    Avise-me se isso ajudair.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.