summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/bluetooth/BluetoothDevice.java3
-rw-r--r--core/java/android/server/BluetoothDeviceService.java6
-rw-r--r--core/jni/android_server_BluetoothDeviceService.cpp10
3 files changed, 10 insertions, 9 deletions
diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java
index abf08cb..951b4b0 100644
--- a/core/java/android/bluetooth/BluetoothDevice.java
+++ b/core/java/android/bluetooth/BluetoothDevice.java
@@ -485,7 +485,8 @@ public class BluetoothDevice {
* Get the major, minor and servics classes of a remote device.
* These classes are encoded as a 32-bit integer. See BluetoothClass.
* @param address remote device
- * @return 32-bit class suitable for use with BluetoothClass.
+ * @return 32-bit class suitable for use with BluetoothClass, or
+ * BluetoothClass.ERROR on error
*/
public int getRemoteClass(String address) {
try {
diff --git a/core/java/android/server/BluetoothDeviceService.java b/core/java/android/server/BluetoothDeviceService.java
index f1a7d25..8e5cee9 100644
--- a/core/java/android/server/BluetoothDeviceService.java
+++ b/core/java/android/server/BluetoothDeviceService.java
@@ -24,6 +24,7 @@
package android.server;
+import android.bluetooth.BluetoothClass;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothError;
import android.bluetooth.BluetoothHeadset;
@@ -970,8 +971,8 @@ public class BluetoothDeviceService extends IBluetoothDevice.Stub {
*/
public synchronized int getRemoteClass(String address) {
if (!BluetoothDevice.checkBluetoothAddress(address)) {
- mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
- return -1;
+ mContext.enforceCallingOrSelfPermission(BLUETOOTH_PERM, "Need BLUETOOTH permission");
+ return BluetoothClass.ERROR;
}
return getRemoteClassNative(address);
}
@@ -1254,4 +1255,3 @@ public class BluetoothDeviceService extends IBluetoothDevice.Stub {
Log.d(TAG, msg);
}
}
-
diff --git a/core/jni/android_server_BluetoothDeviceService.cpp b/core/jni/android_server_BluetoothDeviceService.cpp
index 796da15..a0e0b84 100644
--- a/core/jni/android_server_BluetoothDeviceService.cpp
+++ b/core/jni/android_server_BluetoothDeviceService.cpp
@@ -44,6 +44,8 @@
namespace android {
+#define BLUETOOTH_CLASS_ERROR 0xFF000000
+
#ifdef HAVE_BLUETOOTH
// We initialize these variables when we load class
// android.server.BluetoothDeviceService
@@ -724,11 +726,11 @@ static jstring lastUsedNative(JNIEnv *env, jobject obj, jstring address) {
}
static jint getRemoteClassNative(JNIEnv *env, jobject object, jstring address) {
+ jint result = BLUETOOTH_CLASS_ERROR;
#ifdef HAVE_BLUETOOTH
LOGV(__FUNCTION__);
native_data_t *nat = get_native_data(env, object);
if (nat) {
- jint ret = 0;
const char *c_address = env->GetStringUTFChars(address, NULL);
LOGV("... address = %s", c_address);
@@ -744,17 +746,15 @@ static jint getRemoteClassNative(JNIEnv *env, jobject object, jstring address) {
DBusError err;
dbus_error_init(&err);
if (!dbus_message_get_args(reply, &err,
- DBUS_TYPE_UINT32, &ret,
+ DBUS_TYPE_UINT32, &result,
DBUS_TYPE_INVALID)) {
LOG_AND_FREE_DBUS_ERROR_WITH_MSG(&err, reply);
}
dbus_message_unref(reply);
}
-
- return ret;
}
#endif
- return 0;
+ return result;
}
static jbyteArray getRemoteFeaturesNative(JNIEnv *env, jobject object,