Google on Thursday released the Android M Developer Preview 2 for Nexus devices which brings fixes and updates to Developer Preview 1 based on user feedback.
The latest Developer Preview 2 comes with build number MPZ79M for Nexus 5, Nexus 6, and Nexus 9 devices while it comes with build number MPZ79N for the Nexus Player. All compatible Nexus devices running Developer Preview 1 should start getting notifications about the OTA (over-the-air) update in the coming days, though the system or factory images are already available – users are recommended to backup their data before flashing the image.
Google has listed features and updates that Developer Preview 2 brings including the up to date M release platform code; near-final APIs to validate apps and to provide more testing support, Nexus system images and emulator system images with the Android platform updates have been refined. Apart from the platform update, the system images also include Google Play services 7.6.
For developers, Google notes, “For those developers using the emulator, you can update your M preview system images via the SDK Manager in Android Studio.”
Some of the other Android platform changes include modifications to platform permissions including external storage, Wi-Fi and Bluetooth location, and changes to contacts/identity permissions. There are some API changes including updated Bluetooth Stylus APIs and updated Media API. Google has also fixed a couple of developer-reported issues such as a TextInputLayout hint issue for embedded EditText, and a camera permission issue with Legacy Apps.
Some of the key changes listed by Google include:
Permissions changes
The android.permission.USE_FINGERPRINT permission now has “normal” protection level, so it is no longer necessary to request this permission directly from the user. The USE_FINGERPRINT permission enables fingerprints to be enabled for authentication, but does not give the requesting app access to the enrollment/fingerprint administration flow.
The android.permission.WRITE_EXTERNAL_STORAGE permission has protection level “dangerous”, meaning that apps wanting to write to external storage will need to request permission from the user at runtime. Both WRITE_EXTERNAL_STORAGE and WRITE_EXTERNAL_STORAGE are members of the STORAGE permission group.
Remote Bluetooth/Wi-Fi MAC’s now require either the android.permission.LOCATION_FINE or android.permission.LOCATION_COURSE permission.
Some accounts and identity permissions are moved to CONTACTS permissions group and others are removed or granted based on account type. In particular, android.permission.USE_CREDENTIALS, android.permission.MANAGE_ACCOUNTS, and android.permission.AUTHENTICATE_ACCOUNTS are ungrouped pending further changes in a later release.
The Wi-Fi permissions android.permission.CHANGE_WIFI_STATE, android.permission.CHANGE_WIMAX_STATE, and android.permission.CHANGE_WIFI_MULTICAST_STATE now have protection level “normal”.
The Bluetooth permissions android.permission.BLUETOOTH and android.permission.BLUETOOTH_ADMIN now have protection level “normal”.
Bookmarks and subscribed feeds permissions are removed.
Apps included in the system image are no longer granted dangerous permissions automatically. All apps should check for and request permissions at runtime.
Introduces the utility method Activity.shouldShowRequestPermissionRationale(String), which lets your app see whether users have previously rejected a permission request. This lets you know that your app should explain the the user why it needs that permission. For more information see the Permissions developer guide.
Other changes
The android.app.AssistContent and android.app.AssistStructure classes are moved into a new package, android.app.assist.
Bluetooth Stylus APIs are updated and include new callback events. The View.OnStylusButtonPressListener class is renamed to View.OnContextClickListener and GestureDetector.OnStylusButtonPressListener class to GestureDetector.OnContextClickListener.