41554 blogs · [ { "id": "01a0877f-ab52-7035-a635-eff0fd20afaf", "title": "The Different Node Types in Jetpack Compose", "url": "https://www.grokkingandroid.com/the-different-node-types-in-jetpack-compose/", "published_at": "2025-12-30T15:32:14+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff0fd84152a", "title": "Why Google Limits APIs With Every Android Release: We Devs are to Blame!", "url": "https://www.grokkingandroid.com/google-stricter-with-android-releases-due-to-us-devs/", "published_at": "2019-03-20T06:14:05+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff0fe3b62fa", "title": "Creating Kotlin DSLs", "url": "https://www.grokkingandroid.com/creating-kotlin-dsls/", "published_at": "2018-12-29T03:05:09+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff0fe523d77", "title": "Those “mobile apps are doomed” headlines? They are wrong!", "url": "https://www.grokkingandroid.com/mobile-apps-doomed-headlines-are-wrong/", "published_at": "2018-02-27T09:11:55+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff0fee2f918", "title": "Using the Actions SDK to Develop for the Google Assistant", "url": "https://www.grokkingandroid.com/using-the-actions-sdk/", "published_at": "2017-10-12T06:05:56+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff0ff696068", "title": "A Primer on Cloud Functions for Firebase", "url": "https://www.grokkingandroid.com/primer-cloud-functions-for-firebase/", "published_at": "2017-08-22T09:35:22+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff0ffce2820", "title": "Quick Intro Into Actions on Google", "url": "https://www.grokkingandroid.com/actions-on-google-quick-intro/", "published_at": "2017-08-02T06:33:40+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff10006ebd2", "title": "Android Things: Remote Controlled Car – What’s Coming Up", "url": "https://www.grokkingandroid.com/android-things-remote-controlled-car-whats-coming-up/", "published_at": "2017-02-09T05:41:34+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff100c0af74", "title": "Android’s ConstraintLayout: Align One View’s Edge to Another View’s Center", "url": "https://www.grokkingandroid.com/align-one-views-edge-to-another-views-center-in-constraintlayout/", "published_at": "2016-08-30T07:20:07+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff101a8beb2", "title": "Some Thoughts on Android’s new ConstraintLayout and Android Studio’s new Design Editor", "url": "https://www.grokkingandroid.com/thoughts-on-constraintlayout-and-design-editor/", "published_at": "2016-07-06T06:10:42+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff101f98603", "title": "RxJava’s Side Effect Methods", "url": "https://www.grokkingandroid.com/rxjavas-side-effect-methods/", "published_at": "2015-11-10T08:40:16+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff102082566", "title": "Why use Observable.create() and not just inherit from Observable?", "url": "https://www.grokkingandroid.com/why-use-observable-create-and-not-just-inherit-from-observable/", "published_at": "2015-10-09T05:00:40+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff10238e32c", "title": "Selecting Items of a RecyclerView using StateListDrawables", "url": "https://www.grokkingandroid.com/statelistdrawables-for-recyclerview-selection/", "published_at": "2014-08-22T08:16:21+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff102ae2890", "title": "A First Glance at Android’s RecyclerView", "url": "https://www.grokkingandroid.com/first-glance-androids-recyclerview/", "published_at": "2014-08-14T09:59:14+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff1031f8ed3", "title": "About Cyril Mottier’s “Shaping the Future of Android With Dart” – Some Additional Thoughts", "url": "https://www.grokkingandroid.com/android-dart-additional-thoughts/", "published_at": "2014-06-13T12:41:06+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff1041e4b08", "title": "Stupid mistakes devs make, part I: Taking app messages at face value", "url": "https://www.grokkingandroid.com/stupid-mistakes-dev-make-part_i/", "published_at": "2014-02-28T06:45:11+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff104f3ce7f", "title": "An XMPP Server for Google Cloud Messaging", "url": "https://www.grokkingandroid.com/xmpp-server-google-cloud-messaging/", "published_at": "2014-02-18T06:29:24+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff1054b8d0b", "title": "Upstream Messages With Google Cloud Messaging", "url": "https://www.grokkingandroid.com/upstream_messages_with_google_cloud_messaging/", "published_at": "2014-02-06T08:39:14+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff105da06df", "title": "Chrome-Apps on mobile devices – a good idea?", "url": "https://www.grokkingandroid.com/chrome-apps-mobile-devices-good-idea/", "published_at": "2014-01-30T13:30:06+00:00" }, { "id": "01a0877f-ab52-7035-a635-eff106433f35", "title": "FirefoxOS – my Initial Impression", "url": "https://www.grokkingandroid.com/firefoxos-initial-impression/", "published_at": "2013-12-19T12:07:11+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f670876f7e", "title": "Migrating from ActionBarSherlock to ActionBarCompat", "url": "https://www.grokkingandroid.com/migrating-actionbarsherlock-actionbarcompat/", "published_at": "2013-12-10T17:55:13+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f670c3f8b7", "title": "ActionViews Sample App is on Bitbucket", "url": "https://www.grokkingandroid.com/actionviews-sample-app-is-on-bitbucket/", "published_at": "2013-04-15T06:38:19+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f670e2964e", "title": "SQLite in Android", "url": "https://www.grokkingandroid.com/sqlite-in-android/", "published_at": "2013-03-28T06:58:45+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f6713dc37c", "title": "Two Days at the moosecon Conference", "url": "https://www.grokkingandroid.com/two-days-at-moosecon/", "published_at": "2013-03-09T11:21:53+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f671c484e7", "title": "Adding ActionViews to Your ActionBar", "url": "https://www.grokkingandroid.com/adding-actionviews-to-your-actionbar/", "published_at": "2013-02-08T06:44:32+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f672a4995d", "title": "Adding ActionBar Items From Within Your Fragments", "url": "https://www.grokkingandroid.com/adding-action-items-from-within-fragments/", "published_at": "2013-01-17T11:25:20+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f672fab574", "title": "ActionBarSherlock: Up Navigation", "url": "https://www.grokkingandroid.com/actionbarsherlock-up-navigation/", "published_at": "2013-01-10T10:07:53+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f6737fca3e", "title": "Adding ActionBarSherlock to Your Project", "url": "https://www.grokkingandroid.com/adding-actionbarsherlock-to-your-project/", "published_at": "2012-12-14T09:24:00+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f6744247d0", "title": "Getting Started With Fragments and the Support Library", "url": "https://www.grokkingandroid.com/getting-started-with-fragments-and-the-support-library/", "published_at": "2012-11-29T21:15:07+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f67520a96b", "title": "Android: How to Use Two Data Sources in ListViews?", "url": "https://www.grokkingandroid.com/android-how-to-use-two-data-sources/", "published_at": "2012-11-22T10:34:15+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f675fc923e", "title": "Use Android’s ContentObserver in Your Code to Listen to Data Changes", "url": "https://www.grokkingandroid.com/use-contentobserver-to-listen-to-changes/", "published_at": "2012-11-15T08:44:26+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f6769eccab", "title": "What You Need to Know About the Intents of Android’s Calendar App", "url": "https://www.grokkingandroid.com/intents-of-androids-calendar-app/", "published_at": "2012-11-08T06:53:41+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f676eeb08b", "title": "Half a Year of Blogging About Android Development", "url": "https://www.grokkingandroid.com/half-a-year-of-blogging/", "published_at": "2012-11-05T06:47:18+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f67775caed", "title": "iCal’s Recurrence Rule and Duration Formats", "url": "https://www.grokkingandroid.com/recurrence-rule-and-duration-formats/", "published_at": "2012-10-31T06:45:28+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f67843e849", "title": "Android’s CalendarContract Content Provider", "url": "https://www.grokkingandroid.com/androids-calendarcontract-provider/", "published_at": "2012-10-18T05:48:21+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f67915979c", "title": "Useful Android Libraries: Crouton", "url": "https://www.grokkingandroid.com/useful-android-libraries-crouton/", "published_at": "2012-10-11T13:50:39+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f679b54710", "title": "Take These Steps to Make your Android App Accessible", "url": "https://www.grokkingandroid.com/steps-to-making-android-app-accessible/", "published_at": "2012-10-04T09:54:09+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f679e8d5e4", "title": "How to Use Loaders in Android", "url": "https://www.grokkingandroid.com/using-loaders-in-android/", "published_at": "2012-09-27T05:53:51+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f67a074d93", "title": "Android Quick Tip: Enabling and Disabling BroadcastReceivers at Runtime", "url": "https://www.grokkingandroid.com/enabling-and-disabling-broadcastreceivers/", "published_at": "2012-09-19T05:47:06+00:00" }, { "id": "01a0c510-65b5-71c9-a47c-a0f67ad23693", "title": "Recording Audio using Android’s MediaRecorder Framework", "url": "https://www.grokkingandroid.com/recording-audio-using-androids-mediarecorder-framework/", "published_at": "2012-09-11T09:33:40+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd558e17a6", "title": "Adding Files to Android’s Media Library Using the MediaScanner", "url": "https://www.grokkingandroid.com/adding-files-to-androids-media-library-using-the-mediascanner/", "published_at": "2012-09-06T10:02:20+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd561d5146", "title": "How to Correctly Store App-Specific Files in Android", "url": "https://www.grokkingandroid.com/how-to-correctly-store-app-specific-files-in-android/", "published_at": "2012-08-30T09:26:12+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd5710f22b", "title": "Android Quick Tip: Formatting Text with Html.fromHtml()", "url": "https://www.grokkingandroid.com/android-quick-tip-formatting-text-with-html-fromhtml/", "published_at": "2012-08-17T05:25:54+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd57b398ca", "title": "Android Tutorial: BroadcastReceiver", "url": "https://www.grokkingandroid.com/android-tutorial-broadcastreceiver/", "published_at": "2012-08-08T13:27:45+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd589b4b2d", "title": "Wrapping Your Head Around Android’s Plurals", "url": "https://www.grokkingandroid.com/wrapping-your-head-around-androids-plurals/", "published_at": "2012-07-31T06:43:33+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd59734095", "title": "Handling Binary Data with ContentProviders", "url": "https://www.grokkingandroid.com/handling-binary-data-with-contentproviders/", "published_at": "2012-07-25T09:18:29+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd5a582fbf", "title": "Checking Intent Availability in Android", "url": "https://www.grokkingandroid.com/checking-intent-availability/", "published_at": "2012-07-17T08:04:25+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd5ad9f77a", "title": "Android Tutorial: Adding Search Suggestions", "url": "https://www.grokkingandroid.com/android-tutorial-adding-suggestions-to-search/", "published_at": "2012-07-13T07:01:03+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd5b4303c5", "title": "Android’s ContentProviderOperation: “withYieldAllowed” explained", "url": "https://www.grokkingandroid.com/androids-contentprovideroperation-withyieldallowed-explained/", "published_at": "2012-07-10T08:33:41+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd5b5f53e5", "title": "Android Tutorial: Adding Search to Your Apps", "url": "https://www.grokkingandroid.com/android-tutorial-adding-search-to-your-apps/", "published_at": "2012-07-06T06:39:10+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd5b68f4f5", "title": "Why is There no Configuration by Default for Android Search?", "url": "https://www.grokkingandroid.com/why-is-there-no-configuration-by-default-for-android-search/", "published_at": "2012-07-03T06:09:10+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd5c45eab0", "title": "Surprising Statistics on Library Usage in Android Apps", "url": "https://www.grokkingandroid.com/surprising-statistics-on-library-usage-on-android/", "published_at": "2012-06-26T06:13:59+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd5d003f83", "title": "How Android’s AutoCompleteTextView Nearly Drove me Nuts", "url": "https://www.grokkingandroid.com/how-androids-autocompletetextview-nearly-drove-me-nuts/", "published_at": "2012-06-20T07:41:01+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd5d1a6020", "title": "Android’s ContentProviderOperation: “withBackReference” explained", "url": "https://www.grokkingandroid.com/androids-contentprovideroperation-withbackreference-explained/", "published_at": "2012-06-15T20:48:59+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd5d7b8a46", "title": "Android Tutorial: Writing your own Content Provider", "url": "https://www.grokkingandroid.com/android-tutorial-writing-your-own-content-provider/", "published_at": "2012-06-12T21:31:14+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd5e39e66f", "title": "Weird error message in Android’s MergeCursor", "url": "https://www.grokkingandroid.com/weird-error-message-in-androids-mergecursor/", "published_at": "2012-06-08T14:30:35+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd5e6c76e1", "title": "Android: Getting Notified of Connectivity Changes", "url": "https://www.grokkingandroid.com/android-getting-notified-of-connectivity-changes/", "published_at": "2012-06-04T12:52:09+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd5f360a3e", "title": "Displaying Error Hints in Forms on Android", "url": "https://www.grokkingandroid.com/displaying-error-hints-in-forms-on-android/", "published_at": "2012-05-29T21:51:59+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd5fa27adf", "title": "Android Tutorial: Using Content Providers", "url": "https://www.grokkingandroid.com/android-tutorial-using-content-providers/", "published_at": "2012-05-23T21:35:32+00:00" }, { "id": "01a0c51e-75f1-708e-8650-64dd5fd6756b", "title": "Finding all View-IDs of an Android UI", "url": "https://www.grokkingandroid.com/finding-all-view-ids-of-an-android-ui/", "published_at": "2012-05-20T21:53:39+00:00" }, { "id": "01a0c529-d15e-7275-9497-6d56baca8b60", "title": "Android: Better Performance with ContentProviderOperation", "url": "https://www.grokkingandroid.com/better-performance-with-contentprovideroperation/", "published_at": "2012-05-17T21:25:11+00:00" }, { "id": "01a0c529-d15e-7275-9497-6d56baf05a31", "title": "How to Correctly Use SQL’s like in Android", "url": "https://www.grokkingandroid.com/how-to-correctly-use-sqls-like-in-android/", "published_at": "2012-05-15T14:05:26+00:00" }, { "id": "01a0c529-d15e-7275-9497-6d56bb39134f", "title": "Using your Google Account in the Android Emulator", "url": "https://www.grokkingandroid.com/using-a-google-account-in-the-emulator/", "published_at": "2012-05-13T07:07:38+00:00" }, { "id": "01a0c529-d15e-7275-9497-6d56bb7984bb", "title": "Android Tutorial: Content Provider Basics", "url": "https://www.grokkingandroid.com/android-tutorial-content-provider-basics/", "published_at": "2012-05-12T20:34:43+00:00" }, { "id": "01a0c529-d15e-7275-9497-6d56bc606728", "title": "Android: Checking Connectivity", "url": "https://www.grokkingandroid.com/android-checking-connectivity/", "published_at": "2012-05-11T20:26:07+00:00" }, { "id": "01a0c529-d15e-7275-9497-6d56bd19593a", "title": "A new blog", "url": "https://www.grokkingandroid.com/a-new-blog/", "published_at": "2012-05-04T12:33:05+00:00" } ] posts Claim your blog
Back to grokkingandroid.com
Blog · corpus.blog/blogs/grokkingandroid.com/posts

grokkingandroid.com

grokkingandroid.com

2025

2019

2018

2017

2016

2015

2014

2013

2012