Android M
Well, we know it won’t be called Milkshake…
[image: Google-IO-2015-_0519.jpg]
Android M’s addition to Android is mostly standardization, integration, and simplification. It’s not as much about new, flashy features as it is about making things work better and with less cognitive effort on the part of the user.
Permissions
[image: Image%202015-06-19%20at%209.04.23%20PM.png]
App permissions are (finally) no longer all or none.
In old version of android, before you could install an app, a dialog popped up asking you to agree to an onslaught of permissions that the app needed. For apps like Facebook that literally would buy your soul if it could, this comes out to 12+ permissions. Your choices were agree to them all, or don’t use our app. Basically Android peer pressured you into giving away your security and privacy.
The “new” model has only 6 permissions:
Location, Camera, Mic, Contacts, Phone, SMS, Calendar, Sensor
In addition, apps no longer ask you to agree to them all at install time. The first time an app uses a permission, you are prompted as to whether you want to grant that permission. If you deny it, the app will not be able to use the permission. No longer is it all or none.
Above, I said “new” in quotes for a reason. This isn’t really a fundamental change to the Android permssioning system, but rather a change to how the user perceives it. From a developers perspective, an app must request the exact same permissions in M as in any previous version. Instead, the user is prompted differently (at runtime, not install time) to grant the permissions. Apps targeting old versions of the app will simply use the old install-time prompt.
An astute reader may have noticed an interesting omission in the list of permissions: Internet. Yes, that is correct, an app no longer needs to ask you for permission to access the internet. This may seem like a glaring omission (why the fuck would a flashlight need internet access?), but the Android team has clarified it as unnecessary. Since everything else is guarded behind a runtime permission request, an app with only internet can’t leak your data. While true, this is a little bit unnerving - could a flashlight use an exploit to leak data and upload it without you even knowing it is accessing the internet? I’m not entirely convinced this isn’t an issue, but it is a fairly minor one, at least.
Chrome Custom Tabs
In an interesting attempt to blur the lines between native and web apps, google introduced branded, custom chrome tabs.
Pinterest App
[image: Image%202015-06-19%20at%209.20.00%20PM.png]
Pinterest Custom Tab
[image: Image%202015-06-19%20at%209.20.27%20PM.png]
The idea is that when a link is clicked from your app, rather than having to implement your own webview or do a full context switch to the web browser, you can embed open a branded chrome tab. This has the benefit of being faster than switching to the browser and retaining most of the feel of your app. To make it truly fast, the web content can be prefetched to allow native-like transitions (It was not clear if every link is prefetched).
App Linking
Along the same lines of Chrome Custom Tabs, Android M is blurring the line of native and web apps on the native side. If you’re familiar with Android Dev, there is a concept of an intent. An app can advertise that it can handle, say, document editing intents. Then, a different app can send out an intent to edit a document which then opens in the first. This is how you can click the share button and see a bunch of installed apps to share with.
One of the issues is that if you open, say, a youtube link, Android will ask you whether to open it in the YouTube app or Chrome.
To enhance this, apps can claim full ownership of links. Basically the app claims links to youtube. When you install the app, Android will go to youtube and look for a file containing the signature of the app. If it finds it, Android will automatically open youtube links in the youtube app without asking for user input.
Apps can claim links to avoid the disambiguation dialog
Android Pay
Really isn’t much to say. This is Google Pay moved into Android rather than as a google app.
On interesting thing is that when you add a card to Android Pay, it get’s a fake credit card number that is shared with the merchant. If an sketchy merchant abuses your info, you can just remove the card from google pay and the merchant has no access anymore.
Fingerprint
Standardized. Expect more phones with fingerprint readers (also easier access for devs)
Doze
Basically, when you don’t use your phone, wake ups for background tasks are take on exponential back off. Google claims up to 2x battery life in standby, which largely means if you leave your tablet on a shelf or don’t plug your phone in overnight, it won’t die. Kinda cool, mostly meh.
Misc
USB-C standard
Text highlighting jumps to word boundaries forward (individual characters backwards)
Lollipop volume controls are gone (back to the kind that actually fucking works)
Dev preview is available on Nexus 5, 6, 9, player