Android 5.0で追加されたエンタープライズ環境向け管理機能(EMM)は、2015年2月に「Android for Work」となり、Android Mでは以下の動作変更が含まれています。
ユーザーが発着信履歴を表示した際に、Google Dialer Call Logが現在の仕事の連絡先を表示します。
DevicePolicyManager.setCrossProfileCallerIdDisabled()をtrueに設定すると、Google Dialer Call Logは仕事の連絡先を非表示にします。DevicePolicyManager.setBluetoothContactSharingDisabled()をfalseに設定すると、Bluetoothデバイスに仕事の連絡先を表示できます。デフォルトではtrueに設定されています。
プロファイルが削除された場合、そのプロファイル上で追加された無線LAN設定は削除されます。
デバイス所有者によって作成された無線LAN設定は他のユーザーが変更したり削除したりすることができるようになりました。ユーザーはUserManagerのDISALLOW_CONFIG_WIFI定数がそのユーザーに設定されていないならば、独自の無線LAN設定を作成および変更できます。
企業向けモバイル管理の「Work Policy Controller」アプリを介して管理する必要があるGoogleアカウントが、管理されている外部デバイスに追加された場合、Work Policy Controllerをインストールするプロンプトが表示されます。この現象は、デバイスのセットアップウィザード時に[設定]→[アカウント]を介してアカウントを追加した場合も適用されます。
setCameraDisabled()は、それを呼び出しているカメラアプリを使っているユーザーだけに影響を与えます。ただし、管理対象プロファイルからsetCameraDisabled()を呼び出すのであれば、主要ユーザーで実行されているカメラアプリに影響は与えません。
またsetKeyguardDisabledFeatures()は、デバイス所有者に加えてプロファイル所有者のために利用できるようになりました。プロファイル所有者は以下のキーガードの制限を設定できます。
Android MではWi-FiやネットワークAPIに動作変更があります。
アプリが作成したWifiConfigurationオブジェクトは、アプリからそのステータスを変更できるようになりました。他のアプリで作成されたWifiConfigureationは変更や削除することはできません。
また以前は、「disableAllOthers=true」と設定されていても、enableNetwork()を使用して特定のWi-Fiに強制的に接続している場合、その他の携帯電話通信網(3G/4G/4G LTE)のようなネットワークからは切断されていました。Android Mでは、もう他のネットワークを切断しません。
なお、アプリのtargetSdkVersionが20(Android 5.0)以下である場合、選択されたWi-Fiネットワークに固定されます。targetSdkVersionが21以上である場合、指定したネットワーク上で送受信されることを確実にするためには、例えばopenConnection()、bindSocket()および新しいConnectivityManager.bindProcessToNetwork()などのマルチネットワークAPIを使用します。
Android Mは、Nexus 6とNexus 9でWi-Fi通信時に、Hotspot 2.0 Release 1の仕様をサポートします。Hotspot 2.0はOracle Java VMのHotSpotのことではなく、Wi-Fi Allianceの定める認証を行うための標準仕様です。
アプリでHotspot 2.0の資格情報に対応するにはsetPlmn()とsetRealm()などWifiEnterpriseConfigの新しいメソッドを使用します。WifiConfigurationオブジェクトはFQDNとproviderFriendlyNameフィールドを設定できます。検出されたネットワークはHotspot 2.0アクセスポイントを表している場合、新しいScanResult.PasspointNetworkプロパティを示します。
Android Mでは、Apache HTTP Clientのサポートを終了します。アプリのターゲットがAndroid 2.3(APIレベル9)以上の場合、Apache HTTP Clientの代わりにHttpURLConnectionを使う必要があります。このAPIは圧縮やレスポンスのキャッシュを介してネットワークトラフィックを減少させるので、効率的かつ省エネです。Apache HTTP Clientを引き続き使用するには、build.bradleファイルで以下の依存関係を宣言しなければなりません。
android { useLibrary 'org.apache.http.legacy' }
また、AndroidはOpenSSLからBoringSSLに移行しつつあるそうです。
Android NDKを使用して開発されたアプリで暗号化ライブラリが必要な場合、Android NDKに含まれるlibcrypto.soやlibssl.soなどのライブラリを使わないことが推奨されます。これらのライブラリは公開APIではなく、リリースおよびデバイスごとに予告なく変更される可能性があり、さらにセキュリティ脆弱性にさらされることになるからです。代わりに、JNIを用いてJavaの暗号APIを呼び出すか、自身で用意した暗号化ライブラリを静的に使う方がよいそうです。
アプリがBLE(Bluetooth Low Energy)のスキャンを行う場合、パケットが一定期間なく、ScanFilterに一致する広告パケットが最初に発見された場合、そのアプリにだけコールバックされるように指定するための新しいandroid.bluetooth.le.ScanSettings.Builder.setCallbackType()を使えます。これにより、Android M未満のアプリよりも電力効率が良くなります。
Copyright © ITmedia, Inc. All Rights Reserved.