{"id":16876424,"url":"https://github.com/staktrace/pimple-android","last_synced_at":"2026-04-29T04:38:45.409Z","repository":{"id":22086719,"uuid":"25416331","full_name":"staktrace/pimple-android","owner":"staktrace","description":"Code to create a separate contacts and calendar database in Android","archived":false,"fork":false,"pushed_at":"2024-01-22T04:34:32.000Z","size":173,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-23T08:49:10.927Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/staktrace.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-10-19T03:02:46.000Z","updated_at":"2024-01-22T04:34:36.000Z","dependencies_parsed_at":"2024-11-25T04:24:57.673Z","dependency_job_id":"6ba1bafc-7d55-47fc-85c0-43bbee7f402d","html_url":"https://github.com/staktrace/pimple-android","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/staktrace/pimple-android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staktrace%2Fpimple-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staktrace%2Fpimple-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staktrace%2Fpimple-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staktrace%2Fpimple-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/staktrace","download_url":"https://codeload.github.com/staktrace/pimple-android/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/staktrace%2Fpimple-android/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32411539,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T03:46:11.172Z","status":"ssl_error","status_checked_at":"2026-04-29T03:37:55.317Z","response_time":110,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-13T15:39:25.271Z","updated_at":"2026-04-29T04:38:45.395Z","avatar_url":"https://github.com/staktrace.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"Hi there!\n\nThis code is intended to serve as a working example of how to set up an\n\"account\" on Android, along with dummy (or working) sync adapters for contacts\nand calendar data. This allows you to store contact and calendar info on an\nAndroid device without going through the existing sync providers (primarily\nGoogle).\n\nThis code is not intended to be used as-is, since it does a bunch of stuff like\nmake HTTP requests against a server with undocumented interfaces and so on.\nInstead, use this code as a guide and take any parts that you need when rolling\nyour own solution. Alternatively, start with this code and rip out all the\nHTTP-related code and replace it with stubs.\n\nThere are three main \"chunks\" of code, which are in the three subdirectories\nunder accounts/src/com/staktrace/pimple.\n\n1. The account authenticator\n   The code under accounts/ implements the Android account interfaces, so that\n   you can create an account of type \"pimple\". As-is the code requires a\n   username in the form of user@host and a password, and then attempts to verify\n   the user/password against a login script on \"host\". Feel free to rip that\n   part out (the HttpAuthenticator class) and just hard-code the places it's\n   used with an auth token or something.\n\n2. The contact sync adapter\n   The code under touch/ implements a one-way sync adapter that pulls contacts\n   from \"host\" and parses them assuming they're in a vcard format. It then\n   updates the local (device) contact store with the pulled data. Again, feel\n   free to rip that part out if you want.\n\n   Note that there is a file at accounts/res/xml/contacts.xml which is\n   registered in the AndroidManifest.xml as an\n   android.provider.CONTACTS_STRUCTURE. This is the thing that lets you create\n   a new contact into the pimple account using the contacts app on-device.\n   Without this part you won't be able to create new contacts from the UI.\n\n3. The calendar sync adapter\n   The code under epoch/ provides a dummy sync adapter that doesn't do anything\n   except pretend that it syncs calendar entries. Again, this allows you to\n   create and manipulate calendar entries via the calendar app on-device,\n   and they get \"synced\" to the pimple account rather than to Google or any\n   other service.\n\nThat's all, folks!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstaktrace%2Fpimple-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstaktrace%2Fpimple-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstaktrace%2Fpimple-android/lists"}