Available to run on Nexus 5, 6, 9 and Player, the SDK for Android 6.0 Marshmallow is ready for download. Although Android M is an incremental release, it holds significant changes for users and developers across SDK functionalities.
Android M apps can offer deeper linking between apps and web domains for direct user-level transitions. Associations are specified in the intent filter, verification uses a server-side JSON file while the transition itself is coded in an app activity.
App Auto Backup
Full, automatic data backup and restore is now available for users with Google accounts. All or part of the app’s data including databases, shared preferences and the application’s private directory can be duplicated. There is a 25MB limit per app, but that does not count against the user’s quota. Developers need only update targetSdkVersion to 23 to enable this feature.
Fingerprints and Passwords
With Android M, developers can add fingerprint scanning for any platform with an appropriate device using the new FingerprintManager class. Apps using this feature must authenticate independently of other apps. Apps can check the interval since the last user authentication on a device-unlocking mechanism, such as a screen-lock password. This feature frees developers from implementing separate authentication interfaces and eliminates app-specific passwords.
Developers can define direct share targets within their apps to launch specific activities via new APIs. These allow users to share content, e.g. contact info, to other apps by launching activities in those apps. Direct sharing by users is facilitated by exposing the direct share targets in a Share menu on the platform.
A new voice interaction API is included in Android Marshmallow that works alongside Voice Actions to enable conversational interaction between apps and users. Most interactions are initiated by a voice action from the user, but can be accomplished by an app sending an intent to start voice interaction. Apps then prompt users to confirm interactions or continue with the conversation.
Support for Android Pay
Android Pay is now fully integrated with Android M. Users store payment information on the platform, which is securely available to developer apps. These apps are able to couple with store or payment provider apps to permit users to utilize NFC terminals for payment processing. Android M also supports third-parties ample freedom with regard to customized presentation and brand integration. Google announced that over 700,000 merchants and over a thousand apps are already signed up.
Chrome Custom Tabs
Custom tabs in Android M allow apps to overlay a customized Chrome window on the currently active app in lieu of launching a full instantiation of Chrome. This softens the boundary between app and web experience for users. Since Android M can pre-fetch the tab content, it feels faster too. Each tab includes overflow menu options. Apps control the overall look and feel while taking full advantage of Chrome capabilities.
With Marshmallow, app permission moves to an on-demand model, which significantly lowers users’ cognitive load, while avoiding or deferring users’ negative impression that an app has too many permissions. At runtime, when an app requires permissions, it displays a one-time prompt asking the user to grant permission. Apps that do not adopt the new permissions model, default to the install-time permissions model.
Apps declare all potential permissions in the app manifest. Permissions designated as PROTECTION_NORMAL are auto-granted at install time. Unfortunately, apps must poll the current state of its permissions at runtime, since apps are not notified when a user turns off one or more of them.
Context awareness, answers and assistance in taking action have all been improved within Google Now on Android M. Google Now graphs over one billion entities including 100 million different places. Users access the virtual assistant within an app by holding the home button, an action known as Google Now on Tap. Thus, the assistant might display a list of restaurants given the context of a text chat about where to go for lunch. App access is via the new AssistContent class and Google is rolling out a Now on Tap pilot program with 100 apps.
Apps can take advantage of a number of new alarms:
- A new filter, INTERRUPTION_FILTER_ALARMS, permits alarms to penetrate the do not disturb mode.
- A new category value, CATEGORY_REMINDER, distinguishes user-scheduled alarms from CATEGORY_EVENT and CATEGORY_ALARM reminders.
- A new Icon class can attach to notifications and the addAction() method now accepts Icon objects.
- A new method, getActiveNotifications(), lets apps enumerate currently active notifications.
Android for Work
Many new APIs and controls in Android M have been created to specifically support corporate, single-use devices and enterprise workflows. These include controls for keyguards, status bars, safe boots, always-on screens, auto-acceptance of system updates and runtime permissions management.
Device provisioning and unprovisioning without user intervention is supported now in the PackageInstaller APIs, which permits one-touch provisioning of kiosks or other devices without a Google account. Managed app access to certificates is possible now without user intervention and certificate installation can be delegated to third-party apps.
Despite appearing to be just an incremental release, Android 6.0 M includes meaningful advances for both users and developers in the areas of security, contextual awareness, improved user interaction and experience plus new automation capabilities for enterprise administrators. Although deployment is currently limited to Nexus devices, developers can get a head start on Marshmallow app development by downloading the Android M Developer Preview today.