Merge "Add support for FEATURE_NFC_ANDROID_BEAM" am: 6827785e52
am: 39845367ab
Change-Id: Ia7fc968221a6eb314a9ee384e0dd84d3aa0e84b4
This commit is contained in:
@@ -16,6 +16,7 @@
|
|||||||
package com.android.settings.nfc;
|
package com.android.settings.nfc;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.nfc.NfcAdapter;
|
import android.nfc.NfcAdapter;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
@@ -63,6 +64,10 @@ public class AndroidBeamPreferenceController extends BasePreferenceController
|
|||||||
@Override
|
@Override
|
||||||
@AvailabilityStatus
|
@AvailabilityStatus
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
|
PackageManager pm = mContext.getPackageManager();
|
||||||
|
if (!pm.hasSystemFeature(PackageManager.FEATURE_NFC_BEAM)) {
|
||||||
|
return UNSUPPORTED_ON_DEVICE;
|
||||||
|
}
|
||||||
return mNfcAdapter != null
|
return mNfcAdapter != null
|
||||||
? AVAILABLE
|
? AVAILABLE
|
||||||
: UNSUPPORTED_ON_DEVICE;
|
: UNSUPPORTED_ON_DEVICE;
|
||||||
|
@@ -22,6 +22,7 @@ import static org.mockito.Mockito.spy;
|
|||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.pm.PackageManager;
|
||||||
import android.nfc.NfcAdapter;
|
import android.nfc.NfcAdapter;
|
||||||
import android.nfc.NfcManager;
|
import android.nfc.NfcManager;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
@@ -56,6 +57,8 @@ public class AndroidBeamPreferenceControllerTest {
|
|||||||
private UserManager mUserManager;
|
private UserManager mUserManager;
|
||||||
@Mock
|
@Mock
|
||||||
private PreferenceScreen mScreen;
|
private PreferenceScreen mScreen;
|
||||||
|
@Mock
|
||||||
|
private PackageManager mPackageManager;
|
||||||
|
|
||||||
private RestrictedPreference mAndroidBeamPreference;
|
private RestrictedPreference mAndroidBeamPreference;
|
||||||
private AndroidBeamPreferenceController mAndroidBeamController;
|
private AndroidBeamPreferenceController mAndroidBeamController;
|
||||||
@@ -77,6 +80,8 @@ public class AndroidBeamPreferenceControllerTest {
|
|||||||
mAndroidBeamPreference = new RestrictedPreference(RuntimeEnvironment.application);
|
mAndroidBeamPreference = new RestrictedPreference(RuntimeEnvironment.application);
|
||||||
when(mScreen.findPreference(mAndroidBeamController.getPreferenceKey())).thenReturn(
|
when(mScreen.findPreference(mAndroidBeamController.getPreferenceKey())).thenReturn(
|
||||||
mAndroidBeamPreference);
|
mAndroidBeamPreference);
|
||||||
|
when(mContext.getPackageManager()).thenReturn(mPackageManager);
|
||||||
|
when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_NFC_BEAM)).thenReturn(true);
|
||||||
|
|
||||||
Settings.Global.putString(mContext.getContentResolver(),
|
Settings.Global.putString(mContext.getContentResolver(),
|
||||||
Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS,
|
Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS,
|
||||||
@@ -93,6 +98,13 @@ public class AndroidBeamPreferenceControllerTest {
|
|||||||
assertThat(mAndroidBeamController.isAvailable()).isTrue();
|
assertThat(mAndroidBeamController.isAvailable()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isAvailable_noNfcFeature_shouldReturnFalse() {
|
||||||
|
when(mNfcAdapter.isEnabled()).thenReturn(true);
|
||||||
|
when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_NFC_BEAM)).thenReturn(false);
|
||||||
|
assertThat(mAndroidBeamController.isAvailable()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void isAvailable_noNfcAdapter_shouldReturnFalse() {
|
public void isAvailable_noNfcAdapter_shouldReturnFalse() {
|
||||||
ReflectionHelpers.setField(mAndroidBeamController, "mNfcAdapter", null);
|
ReflectionHelpers.setField(mAndroidBeamController, "mNfcAdapter", null);
|
||||||
|
Reference in New Issue
Block a user