diff --git a/docs/html/preview/api-overview.jd b/docs/html/preview/api-overview.jd index 01c1b486808e8..df18330aff49b 100644 --- a/docs/html/preview/api-overview.jd +++ b/docs/html/preview/api-overview.jd @@ -4,565 +4,8 @@ page.tags="preview", "developer preview" page.image=images/cards/card-n-overview_2x.png @jd:body - -
-
- -

In this document - - show more -

- -
    -
  1. App Linking
  2. -
  3. Auto Backup for Apps
  4. -
  5. Authentication -
      -
    1. Fingerprint Authentication
    2. -
    3. Confirm Credential
    4. -
    -
  6. -
  7. Direct Share
  8. -
  9. Voice Interactions
  10. -
  11. Assist API
  12. -
  13. Notifications
  14. -
  15. Bluetooth Stylus Support
  16. -
  17. Improved Bluetooth Low Energy Scanning
  18. -
  19. Hotspot 2.0 Release 1 Support
  20. -
  21. 4K Display Mode
  22. -
  23. Themeable ColorStateLists
  24. -
  25. Audio Features
  26. -
  27. Video Features
  28. -
  29. Camera Features -
      -
    1. Flashlight API
    2. -
    3. Camera Reprocessing
    4. -
    -
  30. -
  31. Android for Work Features
  32. -
- -

API Differences

-
    -
  1. API level 22 to 23 (Preview 3) »
  2. -
- -
-
- -

The M Developer Preview gives you an advance look at the upcoming release -for the Android platform, which offers new features for users and app -developers. This document provides an introduction to the most notable APIs.

-

- The M Developer Preview 3 release includes the final APIs for Android 6.0 (API level - 23). If you are preparing an app for use on Android 6.0, - download the latest SDK and to complete your - final updates and release testing. You can review the final APIs in the - API Reference and see the API differences in - the Android API Differences Report. -

- -

- -

Important: - You may now publish apps that target Android 6.0 (API level 23) to the Google Play store. -

- -

Note: - If you have been working with previous preview releases and want to see the differences - between the final API and previous preview versions, download the additional difference - reports included in the preview docs - reference. -

- -

Important behavior changes

- -

If you have previously published an app for Android, be aware that your app might be affected -by changes in the platform.

- -

Please see Behavior Changes for complete information.

- -

App Linking

-

This preview enhances Android’s intent system by providing more powerful app linking. -This feature allows you to associate an app with a web domain you own. Based on this -association, the platform can determine the default app to use to handle a particular -web link and skip prompting users to select an app. To learn how to implement this feature, see -App Linking. - -

Auto Backup for Apps

-

The system now performs automatic full data backup and restore for apps. For the -duration of the M Developer Preview program, all -apps are backed up, independent of which SDK version they target. After the final M SDK release, -your app must target M to enable this behavior; you do not need to add any additional code. If users -delete their Google accounts, their backup data is deleted as well. To learn how this feature -works and how to configure what to back up on the file system, see -Auto Backup for Apps.

- -

Authentication

-

This preview offers new APIs to let you authenticate users by using their fingerprint scans on -supported devices, and check how recently the user was last authenticated using a device unlocking -mechanism (such as a lockscreen password). Use these APIs in conjunction with -the Android Keystore system.

- -

Fingerprint Authentication

- -

To authenticate users via fingerprint scan, get an instance of the new -{@link android.hardware.fingerprint.FingerprintManager} class and call the -{@link android.hardware.fingerprint.FingerprintManager#authenticate(android.hardware.fingerprint.FingerprintManager.CryptoObject, android.os.CancellationSignal, int, android.hardware.fingerprint.FingerprintManager.AuthenticationCallback, android.os.Handler) authenticate()} -method. Your app must be running on a compatible -device with a fingerprint sensor. You must implement the user interface for the fingerprint -authentication flow on your app, and use the standard Android fingerprint icon in your UI. -The Android fingerprint icon ({@code c_fp_40px.png}) is included in the -sample app. If you are developing multiple apps that use fingerprint -authentication, note that each app must authenticate the user’s fingerprint independently. -

- -

To use this feature in your app, first add the - {@link android.Manifest.permission#USE_FINGERPRINT} permission in your manifest.

- -
-<uses-permission
-        android:name="android.permission.USE_FINGERPRINT" />
-
- - -

To see an app implementation of fingerprint authentication, refer to the - - Fingerprint Dialog sample. For a demonstration of how you can use these authentication - APIs in conjunction with other Android APIs, see the video - - Fingerprint and Payment APIs.

- -

If you are testing this feature, follow these steps:

-
    -
  1. Install Android SDK Tools Revision 24.3, if you have not done so.
  2. -
  3. Enroll a new fingerprint in the emulator by going to -Settings > Security > Fingerprint, then follow the enrollment instructions.
  4. -
  5. Use an emulator to emulate fingerprint touch events with the -following command. Use the same command to emulate fingerprint touch events on the lockscreen or -in your app. -
    -adb -e emu finger touch <finger_id>
    -
    -

    On Windows, you may have to run {@code telnet 127.0.0.1 } followed by - {@code finger touch }. -

    -
  6. -
- -

Confirm Credential

-

Your app can authenticate users based on how recently they last unlocked their device. This -feature frees users from having to remember additional app-specific passwords, and avoids the need -for you to implement your own authentication user interface. Your app should use this feature in -conjunction with a public or secret key implementation for user authentication.

- -

To set the timeout duration for which the same key can be re-used after a user is successfully -authenticated, call the new -{@link android.security.keystore.KeyGenParameterSpec.Builder#setUserAuthenticationValidityDurationSeconds(int) setUserAuthenticationValidityDurationSeconds()} -method when you set up a {@link javax.crypto.KeyGenerator} or -{@link java.security.KeyPairGenerator}.

- -

Avoid showing the re-authentication dialog excessively -- your apps should try using the -cryptographic object first and if the the timeout expires, use the -{@link android.app.KeyguardManager#createConfirmDeviceCredentialIntent(java.lang.CharSequence, java.lang.CharSequence) createConfirmDeviceCredentialIntent()} -method to re-authenticate the user within your app. -

- -

To see an app implementation of this feature, refer to the - - Confirm Credential sample.

- -

Direct Share

- - - -

This preview provides you with APIs to make sharing intuitive and quick for users. You can now -define direct share targets that launch a specific activity in your app. These direct share -targets are exposed to users via the Share menu. This feature allows users to share -content to targets, such as contacts, within other apps. For example, the direct share target might -launch an activity in another social network app, which lets the user share content directly to a -specific friend or community in that app.

- -

To enable direct share targets you must define a class that extends the -{@link android.service.chooser.ChooserTargetService} class. Declare your -service in the manifest. Within that declaration, specify the -{@link android.Manifest.permission#BIND_CHOOSER_TARGET_SERVICE} permission and an -intent filter using the -{@link android.service.chooser.ChooserTargetService#SERVICE_INTERFACE SERVICE_INTERFACE} action.

-

The following example shows how you might declare the -{@link android.service.chooser.ChooserTargetService} in your manifest.

-
-<service android:name=".ChooserTargetService"
-        android:label="@string/service_name"
-        android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
-    <intent-filter>
-        <action android:name="android.service.chooser.ChooserTargetService" />
-    </intent-filter>
-</service>
-
- -

For each activity that you want to expose to -{@link android.service.chooser.ChooserTargetService}, add a -{@code } element with the name -{@code "android.service.chooser.chooser_target_service"} in your app manifest. -

- -
-<activity android:name=".MyShareActivity”
-        android:label="@string/share_activity_label">
-    <intent-filter>
-        <action android:name="android.intent.action.SEND" />
-    </intent-filter>
-<meta-data
-        android:name="android.service.chooser.chooser_target_service"
-        android:value=".ChooserTargetService" />
-</activity>
-
- -

Voice Interactions

-

-This preview provides a new voice interaction API which, together with -Voice Actions, -allows you to build conversational voice experiences into your apps. Call the -{@link android.app.Activity#isVoiceInteraction()} method to determine if a voice action triggered -your activity. If so, your app can use the -{@link android.app.VoiceInteractor} class to request a voice confirmation from the user, select -from a list of options, and more.

- -

Most voice interactions originate from a user voice action. A voice interaction activity can -also, however, start without user input. For example, another app launched through a voice -interaction can also send an intent to launch a voice interaction. To determine if your activity -launched from a user voice query or from another voice interaction app, call the -{@link android.app.Activity#isVoiceInteractionRoot()} method. If another app launched your -activity, the method returns {@code false}. Your app may then prompt the user to confirm that -they intended this action.

- -

To learn more about implementing voice actions, see the -Voice Actions developer site. -

- -

Assist API

-

-This preview offers a new way for users to engage with your apps through an assistant. To use this -feature, the user must enable the assistant to use the current context. Once enabled, the user -can summon the assistant within any app, by long-pressing on the Home button.

-

Your app can elect to not share the current context with the assistant by setting the -{@link android.view.WindowManager.LayoutParams#FLAG_SECURE} flag. In addition to the -standard set of information that the platform passes to the assistant, your app can share -additional information by using the new {@link android.app.assist.AssistContent} class.

- -

To provide the assistant with additional context from your app, follow these steps:

- -
    -
  1. Implement the {@link android.app.Application.OnProvideAssistDataListener} interface.
  2. -
  3. Register this listener by using -{@link android.app.Application#registerOnProvideAssistDataListener(android.app.Application.OnProvideAssistDataListener) registerOnProvideAssistDataListener()}.
  4. -
  5. In order to provide activity-specific contextual information, override the -{@link android.app.Activity#onProvideAssistData(android.os.Bundle) onProvideAssistData()} -callback and, optionally, the new -{@link android.app.Activity#onProvideAssistContent(android.app.assist.AssistContent) onProvideAssistContent()} -callback. -
- -

Notifications

-

This preview adds the following API changes for notifications:

- - -

Bluetooth Stylus Support

-

This preview provides improved support for user input using a Bluetooth stylus. Users can pair -and connect a compatible Bluetooth stylus with their phone or tablet. While connected, position -information from the touch screen is fused with pressure and button information from the stylus to -provide a greater range of expression than with the touch screen alone. Your app can listen for -stylus button presses and perform secondary actions, by registering -{@link android.view.View.OnContextClickListener} and -{@link android.view.GestureDetector.OnContextClickListener} objects in your activity.

- -

Use the {@link android.view.MotionEvent} methods and constants to detect stylus button -interactions:

- - -

Improved Bluetooth Low Energy Scanning

-

-If your app performs performs Bluetooth Low Energy scans, use the new -{@link android.bluetooth.le.ScanSettings.Builder#setCallbackType(int) setCallbackType()} -method to specify that you want the system to notify callbacks when it first finds, or sees after a -long time, an advertisement packet matching the set {@link android.bluetooth.le.ScanFilter}. This -approach to scanning is more power-efficient than what’s provided in the previous platform version. -

- -

Hotspot 2.0 Release 1 Support

-

-This preview adds support for the Hotspot 2.0 Release 1 spec on Nexus 6 and Nexus 9 devices. To -provision Hotspot 2.0 credentials in your app, use the new methods of the -{@link android.net.wifi.WifiEnterpriseConfig} class, such as -{@link android.net.wifi.WifiEnterpriseConfig#setPlmn(java.lang.String) setPlmn()} and -{@link android.net.wifi.WifiEnterpriseConfig#setRealm(java.lang.String) setRealm()}. In the -{@link android.net.wifi.WifiConfiguration} object, you can set the -{@link android.net.wifi.WifiConfiguration#FQDN} and the -{@link android.net.wifi.WifiConfiguration#providerFriendlyName} fields. -The new {@link android.net.wifi.ScanResult#isPasspointNetwork()} method indicates if a detected -network represents a Hotspot 2.0 access point. -

- -

4K Display Mode

-

The platform now allows apps to request that the display resolution be upgraded to 4K rendering -on compatible hardware. To query the current physical resolution, use the new -{@link android.view.Display.Mode} APIs. If the UI is drawn at a lower logical resolution and is -upscaled to a larger physical resolution, be aware that the physical resolution the -{@link android.view.Display.Mode#getPhysicalWidth()} method returns may differ from the logical -resolution reported by {@link android.view.Display#getSize(android.graphics.Point) getSize()}.

- -

You can request the system to change the physical resolution in your app as it runs, by setting -the {@link android.view.WindowManager.LayoutParams#preferredDisplayModeId} property of your app’s -window. This feature is useful if you want to switch to 4K display resolution. While in 4K display -mode, the UI continues to be rendered at the original resolution (such as 1080p) and is upscaled to -4K, but {@link android.view.SurfaceView} objects may show content at the native resolution.

- -

Themeable ColorStateLists

-

Theme attributes are now supported in -{@link android.content.res.ColorStateList} for devices running the M Preview. The -{@link android.content.res.Resources#getColorStateList(int) getColorStateList()} and -{@link android.content.res.Resources#getColor(int) getColor()} methods have been deprecated. If -you are calling these APIs, call the new -{@link android.content.Context#getColorStateList(int) getColorStateList()} or -{@link android.content.Context#getColor(int) getColor()} methods instead. These methods are also -available in the v4 appcompat library via {@link android.support.v4.content.ContextCompat}.

- -

Audio Features

- -

This preview adds enhancements to audio processing on Android, including:

- - -

Video Features

-

This preview adds new capabilities to the video processing APIs, including:

- - -

Camera Features

-

This preview includes the following new APIs for accessing the camera’s flashlight and for -camera reprocessing of images:

- -

Flashlight API

-

If a camera device has a flash unit, you can call the -{@link android.hardware.camera2.CameraManager#setTorchMode(java.lang.String, boolean) setTorchMode()} -method to switch the flash unit’s torch mode on or off without opening the camera device. The app -does not have exclusive ownership of the flash unit or the camera device. The torch mode is turned -off and becomes unavailable whenever the camera device becomes unavailable, or when other camera -resources keeping the torch on become unavailable. Other apps can also call -{@link android.hardware.camera2.CameraManager#setTorchMode(java.lang.String, boolean) setTorchMode()} -to turn off the torch mode. When the last app that turned on the torch mode is closed, the torch -mode is turned off.

- -

You can register a callback to be notified about torch mode status by calling the -{@link android.hardware.camera2.CameraManager#registerTorchCallback(android.hardware.camera2.CameraManager.TorchCallback, android.os.Handler) registerTorchCallback()} -method. The first time the callback is registered, it is immediately called with the torch mode -status of all currently known camera devices with a flash unit. If the torch mode is turned on or -off successfully, the -{@link android.hardware.camera2.CameraManager.TorchCallback#onTorchModeChanged(java.lang.String, boolean) onTorchModeChanged()} -method is invoked.

- -

Reprocessing API

-

The {@link android.hardware.camera2 Camera2} API is extended to support YUV and private -opaque format image reprocessing. To determine if these reprocessing capabilities are available, -call {@link android.hardware.camera2.CameraManager#getCameraCharacteristics(java.lang.String) -getCameraCharacteristics()} and check for the -{@link android.hardware.camera2.CameraCharacteristics#REPROCESS_MAX_CAPTURE_STALL} key. If a -device supports reprocessing, you can create a reprocessable camera capture session by calling -createReprocessableCaptureSession(), -and create requests for input buffer reprocessing.

- -

Use the {@link android.media.ImageWriter} class to connect the input buffer flow to the camera -reprocessing input. To get an empty buffer, follow this programming model:

- -
    -
  1. Call the {@link android.media.ImageWriter#dequeueInputImage()} method.
  2. -
  3. Fill the data into the input buffer.
  4. -
  5. Send the buffer to the camera by calling the -{@link android.media.ImageWriter#queueInputImage(android.media.Image) queueInputImage()} method.
  6. -
- -

If you are using a {@link android.media.ImageWriter} object together with an -{@link android.graphics.ImageFormat#PRIVATE} image, your app cannot access the image -data directly. Instead, pass the {@link android.graphics.ImageFormat#PRIVATE} image directly to the -{@link android.media.ImageWriter} by calling the -{@link android.media.ImageWriter#queueInputImage(android.media.Image) queueInputImage()} method -without any buffer copy.

- -

The {@link android.media.ImageReader} class now supports -{@link android.graphics.ImageFormat#PRIVATE} format image streams. This support allows your app to -maintain a circular image queue of {@link android.media.ImageReader} output images, select one or -more images, and send them to the {@link android.media.ImageWriter} for camera reprocessing.

- -

Android for Work Features

-

This preview includes the following new APIs for Android for Work:

- - -

- For a detailed view of all API changes in the M Developer Preview, see the API Differences Report. +This page is under construction. For now, please see + +this page for information.

diff --git a/docs/html/preview/behavior-changes.jd b/docs/html/preview/behavior-changes.jd index a5d9bd0186a6a..52c108912ab8f 100644 --- a/docs/html/preview/behavior-changes.jd +++ b/docs/html/preview/behavior-changes.jd @@ -5,440 +5,8 @@ page.tags="preview", "developer preview" page.image=images/cards/card-n-changes_2x.png @jd:body -
-
- -

In this document

- -
    -
  1. Runtime Permissions
  2. -
  3. Power-Saving Optimizations
  4. -
  5. Adoptable Storage Devices
  6. -
  7. Apache HTTP Client Removal
  8. -
  9. AudioManager Changes
  10. -
  11. Notifications
  12. -
  13. Text Selection
  14. -
  15. Android Keystore Changes
  16. -
  17. Wi-Fi and Networking Changes
  18. -
  19. Camera Service Changes
  20. -
  21. Runtime
  22. -
  23. Access to Hardware Identifier
  24. -
  25. APK Validation
  26. -
  27. USB Connection
  28. -
  29. Android for Work Changes
  30. -
- -

API Differences

-
    -
  1. API level 22 to M Preview »
  2. -
- - -

See Also

-
    -
  1. M Developer Preview API Overview
  2. -
- -
-
- -

Along with new features and capabilities, the M Developer Preview includes a variety of -system changes and API behavior changes. This document highlights -some of the key changes that you should understand and account for in your apps.

- -

If you have previously published an app for Android, be aware that these changes in the -platform affect your app.

- -

Runtime Permissions

-

This preview introduces a new permissions model, where users can now directly manage -app permissions at runtime. This model gives users improved visibility and control over -permissions, while streamlining the installation and auto-update processes for app developers. -Users can grant or revoke permissions individually for installed apps.

- -

On your apps that target the M Preview release or higher, make sure to check for and request -permissions at runtime. To determine if your app has been granted a permission, call the -new {@link android.content.Context#checkSelfPermission(java.lang.String) checkSelfPermission()} -method. To request a permission, call the new -{@link android.app.Activity#requestPermissions(java.lang.String[], int) requestPermissions()} -method. Even if your app is not targeting the M Preview release, you should test your app under -the new permissions model.

- -

For details on supporting the new permissions model in your app, see the - -Permissions developer preview page. For tips on how to assess the impact on your app, -see the Testing Guide

- -

Power-Saving Optimizations

-

This preview introduces new power-saving optimizations for idle devices and apps.

- - -

To learn more about these power-saving changes, see -Power-Saving Optimizations.

- -

Adoptable Storage Devices

-With this preview, users can adopt external storage devices such as SD cards. Adopting an -external storage device encrypts and formats the device to behave like internal storage. This -feature allows users to move both apps and private data of those apps between storage devices. When -moving apps, the system respects the -{@code android:installLocation} -preference in the manifest.

- -

If your app accesses the following APIs or fields, be aware that the file paths they return -will dynamically change when the app is moved between internal and external storage devices. -When building file paths, it is strongly recommended that you always call these APIs dynamically. -Don’t use hardcoded file paths or persist fully-qualified file paths that were built previously.

- - - -

To debug this feature in the developer preview, you can enable adoption of a USB drive that is -connected to an Android device through a USB On-The-Go (OTG) cable, by running this command:

- -
-$ adb shell sm set-force-adoptable true
-
- -

Apache HTTP Client Removal

-

This preview removes support for the Apache HTTP client. If your app is using this client and -targets Android 2.3 (API level 9) or higher, use the {@link java.net.HttpURLConnection} class -instead. This API is more efficient because it reduces network use through transparent compression -and response caching, and minimizes power consumption. To continue using the Apache HTTP APIs, you -must first declare the following compile-time dependency in your {@code build.gradle} file: -

-
-android {
-    useLibrary 'org.apache.http.legacy'
-}
-
-

Android is moving away from OpenSSL to the -BoringSSL -library. If you’re using the Android NDK in your app, don't link against cryptographic libraries -that are not a part of the NDK API, such as {@code libcrypto.so} and {@code libssl.so}. These -libraries are not public APIs, and may change or break without notice across releases and devices. -In addition, you may expose yourself to security vulnerabilities. Instead, modify your -native code to call the Java cryptography APIs via JNI or to statically link against a -cryptography library of your choice.

- -

AudioManager Changes

-

Setting the volume directly or muting specific streams via the {@link android.media.AudioManager} -class is no longer supported. The {@link android.media.AudioManager#setStreamSolo(int,boolean) -setStreamSolo()} method is deprecated, and you should call the -{@link android.media.AudioManager#requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, int, int) requestAudioFocus()} -method instead. Similarly, the -{@link android.media.AudioManager#setStreamMute(int,boolean) setStreamMute()} method is -deprecated; instead, call the {@link android.media.AudioManager#adjustStreamVolume(int, int, int) -adjustStreamVolume()} method and pass in the direction value -{@link android.media.AudioManager#ADJUST_MUTE} or -{@link android.media.AudioManager#ADJUST_UNMUTE}.

- -

Notifications

-

-This release removes the {@code Notification.setLatestEventInfo()} method. Use the -{@link android.app.Notification.Builder} class instead to construct notifications. To update a -notification repeatedly, reuse the {@link android.app.Notification.Builder} instance. Call the -{@link android.app.Notification.Builder#build()} method to get -updated {@link android.app.Notification} instances. -

-

The {@code adb shell dumpsys notification} command no longer prints out your notification text. -Use the {@code adb shell dumpsys notification --noredact} command instead to print out the text -in a notification object.

- -

Text Selection

- - - -

When users select text in your app, you can now display text selection actions such as -Cut, Copy, and Paste in a -floating toolbar. The user interaction implementation is similar to that -for the contextual action bar, as described in - -Enabling the contextual action mode for individual views.

- -

To implement a floating toolbar for text selection, make the following changes in your existing -apps:

-
    -
  1. In your {@link android.view.View} or {@link android.app.Activity} object, change your -{@link android.view.ActionMode} calls from -{@code startActionMode(Callback)} to {@code startActionMode(Callback, ActionMode.TYPE_FLOATING)}.
  2. -
  3. Take your existing implementation of {@code ActionMode.Callback} and make it extend -{@link android.view.ActionMode.Callback2} instead.
  4. -
  5. Override the -{@link android.view.ActionMode.Callback2#onGetContentRect(android.view.ActionMode, android.view.View, android.graphics.Rect) onGetContentRect()} -method to provide the coordinates of the content {@link android.graphics.Rect} object -(such as a text selection rectangle) in the view.
  6. -
  7. If the rectangle positioning is no longer valid, and this is the only element to be invalidated, -call the {@link android.view.ActionMode#invalidateContentRect() invalidateContentRect()} method.
  8. -
- -

If you are using -Android Support Library revision 22.2, be aware that floating toolbars are not -backward-compatible and appcompat takes control over {@link android.view.ActionMode} objects by -default. This prevents floating toolbars from being displayed. To enable -{@link android.view.ActionMode} support in an -{@link android.support.v7.app.AppCompatActivity}, call -{@link android.support.v7.app.AppCompatActivity#getDelegate()}, then call -{@link android.support.v7.app.AppCompatDelegate#setHandleNativeActionModesEnabled(boolean) -setHandleNativeActionModesEnabled()} on the returned -{@link android.support.v7.app.AppCompatDelegate} object and set the input -parameter to {@code false}. This call returns control of {@link android.view.ActionMode} objects to -the framework. In devices running the M Preview, that allows the framework to support -{@link android.support.v7.app.ActionBar} or floating toolbar modes, while on pre-M Preview devices, -only the {@link android.support.v7.app.ActionBar} modes are supported.

- -

Android Keystore Changes

-

With this preview, the -Android Keystore provider no longer supports -DSA. ECDSA is still supported.

- -

Keys which do not require encryption at rest will no longer be deleted when secure lock screen -is disabled or reset (for example, by the user or a Device Administrator). Keys which require -encryption at rest will be deleted during these events.

- -

Wi-Fi and Networking Changes

- -

This preview introduces the following behavior changes to the Wi-Fi and networking APIs.

- - -

Camera Service Changes

-

In this preview, the model for accessing shared resources in the camera service has been changed -from the previous “first come, first serve” access model to an access model where high-priority -processes are favored. Changes to the service behavior include:

- - -

Runtime

-

The ART runtime now properly implements access rules for the -{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} method. This -change fixes a problem where Dalvik was checking access rules incorrectly in previous versions. -If your app uses the -{@link java.lang.reflect.Constructor#newInstance(java.lang.Object...) newInstance()} method and you -want to override access checks, call the -{@link java.lang.reflect.Constructor#setAccessible(boolean) setAccessible()} method with the input -parameter set to {@code true}. If your app uses the -v7 appcompat library or the -v7 recyclerview library, -you must update your app to use to the latest versions of these libraries. Otherwise, make sure that -any custom classes referenced from XML are updated so that their class constructors are accessible.

- -

This preview updates the behavior of the dynamic linker. The dynamic linker now understands the -difference between a library’s {@code soname} and its path -( -public bug 6670), and search by {@code soname} is now -implemented. Apps which previously worked that have bad {@code DT_NEEDED} entries -(usually absolute paths on the build machine’s file system) may fail when loaded.

- -

The {@code dlopen(3) RTLD_LOCAL} flag is now correctly implemented. Note that -{@code RTLD_LOCAL} is the default, so calls to {@code dlopen(3)} that didn’t explicitly use -{@code RTLD_LOCAL} will be affected (unless your app explicitly used {@code RTLD_GLOBAL}). With -{@code RTLD_LOCAL}, symbols will not be made available to libraries loaded by later calls to -{@code dlopen(3)} (as opposed to being referenced by {@code DT_NEEDED} entries).

-

- -

Access to Hardware Identifier

-

To provide users with greater data protection, starting in this release, Android -removes programmatic access to the device’s local hardware identifier for -apps using the Wi-Fi and Bluetooth APIs. The -{@link android.net.wifi.WifiInfo#getMacAddress() WifiInfo.getMacAddress()} and the -{@link android.bluetooth.BluetoothAdapter#getAddress() BluetoothAdapter.getAddress()} methods -now return a constant value of {@code 02:00:00:00:00:00}.

- -

To access the hardware identifiers of nearby external devices via Bluetooth and Wi-Fi scans, -your app must now have the following permissions:

- - -

Note: When a device running M Developer Preview initiates a -background Wi-Fi or Bluetooth scan, the operation is visible to external devices as -originating from a randomized MAC address.

- -

APK Validation

-

The platform now performs stricter validation of APKs. An APK is considered corrupt if a file is -declared in the manifest but not present in the APK itself. An APK must be re-signed if any of the -contents are removed.

- -

USB Connection

-

Device connections through the USB port are now set to charge-only mode by default. To access -the device and its content over a USB connection, users must explicitly grant permission for such -interactions. If your app supports user interactions with the device over a USB port, take into -consideration that the interaction must be explicitly enabled. -

- -

Android for Work Changes

-

This preview includes the following behavior changes for Android for Work:

- +This page is under construction. For now, +this +doc contains information on upcoming behavior changes. +

\ No newline at end of file diff --git a/docs/html/preview/download.jd b/docs/html/preview/download.jd index eac5916e13c82..73f3d438bb53d 100644 --- a/docs/html/preview/download.jd +++ b/docs/html/preview/download.jd @@ -1,4 +1,4 @@ -page.title=Downloads +page.title=Image Downloads and OTA Updates page.image=images/cards/card-download_16-9_2x.png meta.tags="preview", "system image" page.tags="preview", "developer preview" diff --git a/docs/html/preview/features/background-optimization.jd b/docs/html/preview/features/background-optimization.jd index d6af27f97aaaa..1422db5fb33de 100644 --- a/docs/html/preview/features/background-optimization.jd +++ b/docs/html/preview/features/background-optimization.jd @@ -1,4 +1,4 @@ -page.title=N Developer Preview Background Optimizations +page.title=Background Optimizations page.metaDescription=New restrictions to implicit broadcasts. page.keywords="android N", "implicit broadcasts", "job scheduler" @jd:body diff --git a/docs/html/preview/features/data-saver.jd b/docs/html/preview/features/data-saver.jd index 4ea47d57caf70..17e78eb3cd6ca 100644 --- a/docs/html/preview/features/data-saver.jd +++ b/docs/html/preview/features/data-saver.jd @@ -1,4 +1,4 @@ -page.title=N Developer Preview Data Saver +page.title=Data Saver metaDescription=User-enabled data usage optimization. page.keywords="android N", "data usage", "metered network" @jd:body @@ -143,4 +143,4 @@ if (connMgr.isActiveNetworkMetered()) { android.content.Context#registerReceiver Context.registerReceiver()}. Apps that register to receive this broadcast in their manifest will not receive them. -

\ No newline at end of file +

diff --git a/docs/html/preview/features/icu4j-framework.jd b/docs/html/preview/features/icu4j-framework.jd index 895381137b666..d586c1cf6fc9d 100644 --- a/docs/html/preview/features/icu4j-framework.jd +++ b/docs/html/preview/features/icu4j-framework.jd @@ -1,4 +1,4 @@ -page.title=Using ICU4J Android Framework APIs +page.title=ICU4J Support in Framework @jd:body diff --git a/docs/html/preview/features/multi-window.jd b/docs/html/preview/features/multi-window.jd index 6c5a5cb2aaf9b..e2c1f47f44df0 100644 --- a/docs/html/preview/features/multi-window.jd +++ b/docs/html/preview/features/multi-window.jd @@ -1,4 +1,4 @@ -page.title=N Developer Preview Multi-Window Support +page.title=Multi-Window Support page.metaDescription=New support in the N Developer Preview for showing more than one app at a time. page.keywords="multi-window", "android N", "split screen", "free-form" diff --git a/docs/html/preview/features/multilingual-support.jd b/docs/html/preview/features/multilingual-support.jd index 676af5f8276ce..e2082b6c79a5b 100644 --- a/docs/html/preview/features/multilingual-support.jd +++ b/docs/html/preview/features/multilingual-support.jd @@ -1,4 +1,4 @@ -page.title=Supporting Multilingual Users +page.title=Language and Locale @jd:body
diff --git a/docs/html/preview/features/notification-updates.jd b/docs/html/preview/features/notification-updates.jd index 4b4a1d70bc034..fbe8448155831 100644 --- a/docs/html/preview/features/notification-updates.jd +++ b/docs/html/preview/features/notification-updates.jd @@ -1,4 +1,4 @@ -page.title=N Developer Preview Notification Features +page.title=Bundled Notifications page.tags=notifications helpoutsWidget=true diff --git a/docs/html/preview/features/tv-recording-api.jd b/docs/html/preview/features/tv-recording-api.jd index 64d0c297de76e..2405c76ca5355 100644 --- a/docs/html/preview/features/tv-recording-api.jd +++ b/docs/html/preview/features/tv-recording-api.jd @@ -1,4 +1,4 @@ -page.title=Android TV Recording APIs +page.title=TV Recording APIs page.keywords=preview,sdk,tv,recording page.tags=androidn diff --git a/docs/html/preview/permission-changes.jd b/docs/html/preview/permission-changes.jd index 85083b67f1358..768987dc0ccbc 100644 --- a/docs/html/preview/permission-changes.jd +++ b/docs/html/preview/permission-changes.jd @@ -1,4 +1,4 @@ -page.title=Permission changes +page.title=Permissions page.metaDescription=Updates to permissions in the N Developer Preview. page.keywords="android N", "permissions" diff --git a/docs/html/preview/preview_toc.cs b/docs/html/preview/preview_toc.cs index a6101cd896d06..7ea29e1bf20d6 100644 --- a/docs/html/preview/preview_toc.cs +++ b/docs/html/preview/preview_toc.cs @@ -20,7 +20,7 @@ ru-lang="Настройка пакета SDK Preview" zh-cn-lang="设置预览版 SDK" zh-tw-lang="設定預覽版 SDK"> - Preview SDK
+ SDK Setup @@ -28,6 +28,11 @@ + + + + + @@ -59,28 +66,34 @@ zh-tw-lang="API 總覽">New APIs and Features - + + + + + + + + + + + + - -