diff --git a/core/java/android/server/BluetoothEventLoop.java b/core/java/android/server/BluetoothEventLoop.java
index c0b9a68..cb3b6ee 100644
--- a/core/java/android/server/BluetoothEventLoop.java
+++ b/core/java/android/server/BluetoothEventLoop.java
@@ -292,9 +292,9 @@
             mBluetoothService.setProperty(name, propValues[1]);
         } else if (name.equals("Pairable") || name.equals("Discoverable")) {
             String pairable = name.equals("Pairable") ? propValues[1] :
-                mBluetoothService.getProperty("Pairable");
+                mBluetoothService.getPropertyInternal("Pairable");
             String discoverable = name.equals("Discoverable") ? propValues[1] :
-                mBluetoothService.getProperty("Discoverable");
+                mBluetoothService.getPropertyInternal("Discoverable");
 
             // This shouldn't happen, unless Adapter Properties are null.
             if (pairable == null || discoverable == null)
diff --git a/core/java/android/server/BluetoothService.java b/core/java/android/server/BluetoothService.java
index 809e230..db9f34a 100644
--- a/core/java/android/server/BluetoothService.java
+++ b/core/java/android/server/BluetoothService.java
@@ -531,7 +531,7 @@
                 return;
             }
             String []bonds = null;
-            String val = getProperty("Devices");
+            String val = getPropertyInternal("Devices");
             if (val != null) {
                 bonds = val.split(",");
             }
@@ -681,7 +681,6 @@
     /*package*/synchronized void getAllProperties() {
 
         mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
-        if (!isEnabledInternal()) return;
         mAdapterProperties.clear();
 
         String properties[] = (String [])getAdapterPropertiesNative();
@@ -806,7 +805,12 @@
         return true;
     }
 
-    /*package*/ synchronized String getProperty (String name) {
+    /*package*/ synchronized String getProperty(String name) {
+        if (!isEnabledInternal()) return null;
+        return getPropertyInternal(name);
+    }
+
+    /*package*/ synchronized String getPropertyInternal(String name) {
         if (!mAdapterProperties.isEmpty())
             return mAdapterProperties.get(name);
         getAllProperties();
@@ -1639,7 +1643,7 @@
     }
 
     /*package*/ String getAddressFromObjectPath(String objectPath) {
-        String adapterObjectPath = getProperty("ObjectPath");
+        String adapterObjectPath = getPropertyInternal("ObjectPath");
         if (adapterObjectPath == null || objectPath == null) {
             Log.e(TAG, "getAddressFromObjectPath: AdpaterObjectPath:" + adapterObjectPath +
                     "  or deviceObjectPath:" + objectPath + " is null");
@@ -1659,7 +1663,7 @@
     }
 
     /*package*/ String getObjectPathFromAddress(String address) {
-        String path = getProperty("ObjectPath");
+        String path = getPropertyInternal("ObjectPath");
         if (path == null) {
             Log.e(TAG, "Error: Object Path is null");
             return null;
diff --git a/core/jni/.android_server_BluetoothEventLoop.cpp.swp b/core/jni/.android_server_BluetoothEventLoop.cpp.swp
deleted file mode 100644
index d36e403..0000000
--- a/core/jni/.android_server_BluetoothEventLoop.cpp.swp
+++ /dev/null
Binary files differ
