New in version 1.5.0
Version 1.5.0.
* The app is now available in Russian, French, Spanish and Simplified Chinese.
* Security: updated the OpenPGP library (BouncyCastle 1.85) with several hardening fixes for parsing keys and encrypted contacts.
pcontacts signs in to your Proton Mail account, decrypts your contacts client-side using OpenPGP, and exposes them to the system Contacts app so they appear alongside your local contacts — the same way WhatsApp or Telegram surface their own contact directories.
This app is not affiliated with or endorsed by Proton AG.
It uses the same HTTP API as the Proton Mail web client, which is not officially documented or supported for third-party use.
The API may change at any time without notice.
Once contacts land in ContactsContract, the OS owns them.
Stock Android ships with pre-installed applications — Google Play Services, Google Contacts, Gmail, the OEM dialer, the OEM messaging app, vendor "assistant" services — that are granted READ_CONTACTS by default or are very difficult to revoke.
Decrypting Proton contacts onto a device with those apps still installed effectively shares them with Google and the OEM.
For a meaningful privacy posture, run pcontacts on a de-Googled ROM: GrapheneOS is preferred (sandboxed Google Play, per-app contacts scopes), or LineageOS for microG, or vanilla LineageOS without GApps.
pcontacts cannot fix this for you on stock Android; it is a property of the platform's permission model, not of this app.
Features:
* SRP login with TOTP two-factor authentication.
* Client-side-only decryption — your contacts are never sent anywhere except the system address book on your device.
* Full vCard field support: name, email, phone, address, organization, notes, instant messaging, photos, and group membership.
* Bidirectional sync: edits made in the system Contacts app are pushed back to Proton with end-to-end encryption.
* Soft-delete with a 1-hour grace period so accidental deletions can be cancelled before they reach the server.
* Per-field conflict detection when both the phone and Proton have changes to the same contact.
* Periodic background sync via SyncAdapter and WorkManager.
* No Google Play Services, no telemetry, no analytics, no tracking.
Source code: https://github.com/andreabenetton/pcontacts
License: GPL-3.0-only
Anti-Features
This app has features you may not like. Learn more!
Versions
Although APK downloads are available below to give you the choice, you should be aware that by installing that way you will not receive update notifications and it's a less secure way to download. We recommend that you install the F-Droid client and use that.
Download F-Droid
-
arm64-v8a
armeabi-v7a
x86
x86_64
This version requires Android 8.0 or newer.
It is built and signed by the original developer, and guaranteed to correspond to this source tarball.
Permissions
-
view network connections
Allows the app to view information about network connections such as which networks exist and are connected.
-
android.permission.AUTHENTICATE_ACCOUNTS
-
run foreground service
Allows the app to make use of foreground services.
-
find accounts on the device
Allows the app to get the list of accounts known by the phone. This may include any accounts created by applications you have installed.
-
have full network access
Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
-
android.permission.MANAGE_ACCOUNTS
-
show notifications
Allows the app to show notifications
-
query all packages
Allows an app to see all installed packages.
-
read your contacts
Allows the app to read data about your contacts stored on your phone. Apps will also have access to the accounts on your phone that have created contacts. This may include accounts created by apps you have installed. This permission allows apps to save your contact data, and malicious apps may share contact data without your knowledge.
-
read sync settings
Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.
-
read sync statistics
Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced.
-
run at startup
Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
-
prevent phone from sleeping
Allows the app to prevent the phone from going to sleep.
-
modify your contacts
Allows the app to modify the data about your contacts stored on your phone. This permission allows apps to delete contact data.
-
toggle sync on and off
Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.
-
io.pcontacts.app.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
Download APK
5.3 MiB
PGP Signature
|
Build Log
New in version 1.3.4
Version 1.3.4.
* Fixed contacts not syncing on release (F-Droid) builds. Minification was stripping part of the vCard library, so every contact failed to parse and nothing synced. Debug builds were unaffected, which is why it only showed up after install.
-
arm64-v8a
armeabi-v7a
x86
x86_64
This version requires Android 8.0 or newer.
It is built and signed by the original developer, and guaranteed to correspond to this source tarball.
Permissions
-
view network connections
Allows the app to view information about network connections such as which networks exist and are connected.
-
android.permission.AUTHENTICATE_ACCOUNTS
-
run foreground service
Allows the app to make use of foreground services.
-
find accounts on the device
Allows the app to get the list of accounts known by the phone. This may include any accounts created by applications you have installed.
-
have full network access
Allows the app to create network sockets and use custom network protocols. The browser and other applications provide means to send data to the internet, so this permission is not required to send data to the internet.
-
android.permission.MANAGE_ACCOUNTS
-
show notifications
Allows the app to show notifications
-
query all packages
Allows an app to see all installed packages.
-
read your contacts
Allows the app to read data about your contacts stored on your phone. Apps will also have access to the accounts on your phone that have created contacts. This may include accounts created by apps you have installed. This permission allows apps to save your contact data, and malicious apps may share contact data without your knowledge.
-
read sync settings
Allows the app to read the sync settings for an account. For example, this can determine whether the People app is synced with an account.
-
read sync statistics
Allows an app to read the sync stats for an account, including the history of sync events and how much data is synced.
-
run at startup
Allows the app to have itself started as soon as the system has finished booting. This can make it take longer to start the phone and allow the app to slow down the overall phone by always running.
-
prevent phone from sleeping
Allows the app to prevent the phone from going to sleep.
-
modify your contacts
Allows the app to modify the data about your contacts stored on your phone. This permission allows apps to delete contact data.
-
toggle sync on and off
Allows an app to modify the sync settings for an account. For example, this can be used to enable sync of the People app with an account.
-
io.pcontacts.app.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
Download APK
5.2 MiB
PGP Signature
|
Build Log