Exploring the Android Fragment Scenario component

I’m always curious about what tools and features are coming up next in android — and to be sure I don’t miss out on any of this I like to keep an eye on release notes over on the android developer site. Two that caught my eye recently where the fragment-1.1.0-alpha01 and fragment-testing-1.1.0-alpha01 releases, within the testing side of things we see a new FragmentScenario component which provides us with an easy way to test our fragments in isolation. In this post I want to take a quick dive into this so we can get it integrated into our application tests. Note:…

Android Networking with Coroutines and Retrofit

Recently I’ve been reading up on, watching talks on and been generally getting more curious about Kotlin coroutines. Now that they are stable with the release of Kotlin 1.3 it felt like about time to start diving in an play with converting my existing RxJava code over to using coroutines. In this post, we’re going to focus on how we can take an existing network request flow and convert it over to using coroutines instead of RxJava. Now to be honest, before I got into the practical side of coroutines I thought there were going to be a lot of…

Exploring Google Play App Signing

When distributing our Android Applications we’ve always been required to sign our APK using a keystore for our application — this has allowed us to ensure that only the developer(s) of our app are able to upload updated APKs to the play console. However, because this keystore acts as a fingerprint to the lifecycle of our application — if anything was to happen to this then we hit a bit of a tricky situation. Because of the disadvantages that the current signing process brings, Google Play App Signing is here to help make things smoother. In this article I want to dive into this…

Exploring Android P: Enhanced Notifications

With Android P now out in the wild, there are a bunch of new features and APIs which have become available for us to make use of in our applications. Some of these new features fall under the notification APIs, allowing us to create more contextual and detailed notifications for our applications. In this post, I want to dive into the new notification enhancements that have been added to the Notification APIs. This enhancement for notifications is focused around the display of messages within the notification content. The first part that we’re going to look at is the display of…

Exploring the Android App Bundle

There were a ton of exciting things announced at I/O this year — one of the things that caught my eyes the most was the new app bundle format. Not only does this format provide a new upload format for our applications, but it will help to influence how we build and structure our applications in a modular format. In this post I want to dive into the Android App Bundle so that we can get a thorough understanding of what it is, the way it works and how we can add support for it in our own applications. As I mentioned…

Exposing Notification Settings to the Android System

Have you ever looked at the Android System settings page for a specific application and wondered about the option to view “Additional settings in the app”? If you haven’t seen this before in your settings, or aren’t aware of it, this is what it looks like: This option allows developers to essentially provide a link to a push notification settings screen in their application — this allows users to quickly and easily continue altering their notification settings for the chosen app directly from the system. The ability to hook into this was added at API level 21 (Android 5.0), but not all…

Exploring Image Keyboard Support on Android

During a recent hack day we added a bunch of small but impactful features into our application, one of these being integration with the GIF input provided by the Google keyboard. This involved us making use of the Image Keyboard Support (IKS) functionality that was introduced in Android 7.1 (API level 25), this allows us to hook into the media functionality of keyboards and make use of the data that our application retrieves from them. If you implement this into your application, it will look a little something like this: In this quick post I want to take a quick…