Allows usage of vCard resources with the Android contacts provider

Overview

Development tests Documentation

vcard4android

vcard4android is an Android library that brings together VCard and Android. It's a framework for

  • parsing and generating VCard resources (using ez-vcard) from/into data classes that are compatible with the Android Contacts Provider, and
  • accessing the Android Contacts Provider by a unified API.

It has been primarily developed for DAVx⁵ and is currently intended to be used as git submodule.

This software is not affiliated to, nor has it been authorized, sponsored or otherwise approved by Google LLC. Android is a trademark of Google LLC.

Generated KDoc: https://bitfireat.github.io/vcard4android/

Contact

bitfire web engineering GmbH
Florastraße 27
2540 Bad Vöslau, AUSTRIA

For questions, suggestions etc. use Github discussions. We're happy about contributions! In case of bigger changes, please let us know in the discussions before. Then make the changes in your own repository and send a pull request.

License

Copyright (C) Ricki Hirner (bitfire web engineering GmbH) and contributors.

This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under the conditions of the GNU GPL v3.

You might also like...
Application that allows to search some products and display them in a list, also allows to add some product to the shopping cart and remove it
Application that allows to search some products and display them in a list, also allows to add some product to the shopping cart and remove it

Application that allows to search some products and display them in a list, also allows to add some product to the shopping cart and remove it

An android application which shows usage of various jetpack libraries built by the android team
An android application which shows usage of various jetpack libraries built by the android team

JetPacker JetPacker is an android application which implements various jetpack libraries created by the android team. FEATURES - (Will be updated as m

Android Phishing Application.This Project is for Educational purposes only.The Developer of this application is not responsible of any bad usage
Android Phishing Application.This Project is for Educational purposes only.The Developer of this application is not responsible of any bad usage

Android Phishing Application.This Project is for Educational purposes only.The Developer of this application is not responsible of any bad usage

A sample Android app which showcases advanced usage of Dagger among other open source libraries.
A sample Android app which showcases advanced usage of Dagger among other open source libraries.

U+2020 A sample Android app which showcases advanced usage of Dagger among other open source libraries. Watch the corresponding talk or view the slide

A Frida based tool that traces usage of the JNI API in Android apps.
A Frida based tool that traces usage of the JNI API in Android apps.

jnitrace A Frida based tool to trace use of the JNI API in Android apps. Native libraries contained within Android Apps often make use of the JNI API

Android app with advanced usage of Epoxy library

Epoxy Advanced Best practices and advanced usages (EditText & Forms) of Epoxy library written in accordance with the Modular and Clean Architectures.

Ankiconnect Android allows you to utilize the standard Anki mining workflow on Android devices like phones and eReaders

Ankiconnect Android Ankiconnect Android allows you to utilize the standard Anki mining workflow on Android devices like phones and eReaders. Create An

An app that allows you to search for Github profiles of users and their repositories [d.light Android Engineer Test], for the Android Engineer Role
An app that allows you to search for Github profiles of users and their repositories [d.light Android Engineer Test], for the Android Engineer Role

An app that allows you to search for Github profiles of users and their repositories [d.light Android Engineer Test], for the Android Engineer Role

Android app that allows you to draw anything and turn it into a jigsaw puzzle.
Android app that allows you to draw anything and turn it into a jigsaw puzzle.

Android-Jigsaw-Puzzle Like to draw? Like to solve jigsaw puzzles? Try JigDraw! This is an Android app where a user draws something and use it to gener

Comments
  • Support IS_READ_ONLY for Data and Group rows

    Support IS_READ_ONLY for Data and Group rows

    Currently, we have support for the RAW_CONTACT_IS_READ_ONLY flag.

    However Contacts apps can still change the data rows of read-only contacts (and quite everything is a data row, for instance the name). So for native contacts read-only support, we need

    • [x] IS_READ_ONLY support for Data rows (like we had it before the rewrite to data row builders)
    • [x] GROUP_IS_READ_ONLY support for AndroidGroup
    • [x] Tests
    opened by rfc2822 1
  • Save contact photo into assets instead of PHOTO blob

    Save contact photo into assets instead of PHOTO blob

    Raw-contact photos can be saved either

    1. by inserting the photo directly into the database (PHOTO column), or
    2. by writing into the contact photo asset. This method allows arbitrary photo sizes, processes the photo, generates a thumbnail automatically etc.

    Because of its advantages, method 2 should be used when possible. There is however a problem which has forced us to use method 1 until now:

    1. Assume we're within a sync and currently inserting a contact. All data rows except the photo have already been inserted.
    2. Insert the photo as an asset. As soon as the photo is transferred, the contact provider starts a background thread that processes the photo.
    3. Now the sync of this is complete and the dirty flag is reset.
    4. The background thread takes some time and then sets the raw contact photo. Unfortunately, it triggers DIRTY=1 again regardless of whether the asset URI was constructed with caller_is_syncadapter or not.
    5. So the contact is now dirty again and will be uploaded again etc.

    We should give another try to use method 2 if any possible. Useful information:

    • ContactsProvider2 uses a write lock when updating the photo. Maybe an update with DIRTY=0 some time after inserting the photo would block until the photo is actually inserted.
    • ContactsProvider2Test and some other projects simply wait until the photo data row is available. However then we need a timeout, and what for instance if photo insertion failed?
    enhancement 
    opened by rfc2822 1
  • SIP: use TEL instead/additionally to IM

    SIP: use TEL instead/additionally to IM

    SIP (Android: SipAddress) is primarily used for VoIP, which should be saved as TEL property. Additionally an IMPP entry could be created. However the IMPP entry should not be the only/primary one.

    opened by rfc2822 0
  • IM entries: use pre-defined protocols for Android<12 again

    IM entries: use pre-defined protocols for Android<12 again

    On Android <12, the pre-defined protocols for IM can still be used.

    On Android ≥ 12 there are still open questions.

    See https://forums.bitfire.at/topic/2690/jabber-im-entry-sync-as-xmpp/.

    opened by rfc2822 2
Owner
bitfire web engineering
bitfire web engineering
A Free, open source Contacts Butler App built with kotlin

Contacts Butler Do you have a bunch of contacts that are missing a lot of info such as names, emails, phone numbers, etc? Do you really know the conta

Android Contacts Butlers 1 Nov 30, 2021
Media Provider Manager - An Xposed module intended to prevent media storage abuse

Media Provider Manager - An Xposed module intended to prevent media storage abuse

null 104 Dec 26, 2022
Conscrypt Provider app, which can be included from other applications (WIP)

Conscrypt Provider is an APK which can provide the Conscrypt Library to apps that support older Android devices. The Conscrypt Library provides modern

mendhak 8 Oct 1, 2022
Fused Sidecar App: Fused Location Provider sidecar app for ATAK

Fused Sidecar App Fused Sidecar App is a Fused Location Provider for the Android Team Awareness Kit (ATAK). Unlike the out-of-the-box GPS Location Pro

Greg Albrecht W2GMD 9 Oct 5, 2022
A curated list of great Android lint custom rules and resources

Awesome Android Lint A curated list of great Android lint custom rules and resources Contents Rules Articles Other Contribute Rules Google Sample Cust

Harold Martin 37 Dec 9, 2022
An app that is a one-stop destination for all the CS enthusiasts, providing resources like Information scrapping techniques, best YT channels, courses available free-of-cost, etc. & knowledge about every domain and field that exists on the Internet related to Computer Science along with News, Jobs, and Internships opportunities in these domains along with valuable tips and hacks from mentors for a particular domain.

An app that is a one-stop destination for all the CS enthusiasts, providing resources like Information scrapping techniques, best YT channels, courses available free-of-cost, etc. & knowledge about every domain and field that exists on the Internet related to Computer Science along with News, Jobs, and Internships opportunities in these domains along with valuable tips and hacks from mentors for a particular domain.

CSwala 48 Nov 26, 2022
Haven is an app to help people in need find resources.

Haven Haven is an app to help people in need find resources. Haven connects people to resources such as food pantries, homeless shelters, healthcare,

Dev Patel 2 Sep 25, 2022
Brazilian Holidays: a Kotlin/Java library that provides resources to consult Brazilian holidays and business days

Leia esta documentação em Português. Brazilian Holidays Brazilian Holidays is a

Quantis 2 Oct 3, 2022
An app for developers which contains more than 2.4k+ resources , with 1.2k+ free public API documentation

ResourceUp We often spend a lot of time finding good resources to get started with our project right? ResourceUp aims to provide all useful resources

kalp patel 10 Apr 30, 2022
Loco-strings-sync - A custom Gradle Plugin useful to sync loco string resources to local projects

loco-strings-sync A custom Gradle Plugin useful to sync loco string resources to

Jonathan Imperato 1 Feb 14, 2022