我正在尝试使用kivy的python为android编写一个用于Android的python bluetooth库。我从jnius模块使用autoclass导入java类。到目前为止,它工作正常,当我调用函数fetchUuidsWithSdp()并检查获取的uuid的ACTION_UUID意图时,我得到一个错误的对象。我使用的代码是:
elif action == ACTION_UUID:
print("....... ACTION_UUID .......")
extras = intent.getExtras()
fetchedUUIDs = extras.get(EXTRA_UUID)
# fetchedUUIDs = intent.getParcelableArrayExtra(EXTRA_UUID)
print("fetchedUUIDs object type is: ..............")
print (fetchedUUIDs)
for u in fetchedUUIDs:
print u.toString()
所以我在adb控制台中输入以下内容:
I/python (30971): ....... ACTION_UUID .......
I/python (30971): fetchedUUIDs object type is: ..............
I/python (30971): [<android.os.Parcelable at 0x7c1f2600 jclass=android/os/Parcelable jself=<LocalRef obj=0x20f00dfa at 0x79f7bab0>>, <android.os.Parcelable at 0x7c1
显示&quot; fetchedUUIDs&#39;的对象类型。是&#39; android.os.Parcelable&#39;列表&#39; ParcelUuid&#39;名单。当我调用toString()时,我得到以下描述:
I/python (30971): Traceback (most recent call last):
I/python (30971): File "jnius/jnius_proxy.pxi", line 47, in jnius.jnius.PythonJavaClass.invoke (jnius/jnius.c:24931)
I/python (30971): File "jnius/jnius_proxy.pxi", line 73, in jnius.jnius.PythonJavaClass._invoke (jnius/jnius.c:25609)
I/python (30971): File "/home/tito/code/python-for-android/build/python-install/lib/python2.7/site-packages/android/broadcast.py", line 18, in onReceive
I/python (30971): File "main.py", line 235, in on_broadcast
I/python (30971): print u.toString()
I/python (30971): AttributeError: 'android.os.Parcelable' object has no attribute 'toString'
我的代码有什么问题吗?非常感谢任何帮助。
答案 0 :(得分:0)
我的猜测是你要么没有在你的java代码中创建UUID上游,要么就是没有像你期望的那样传递给你的Intent额外内容。
你确定fetchUuidsWithSdp()在你的java代码中返回一个UUID吗?您确定UUID是通过Java代码中的Intent正确传递的吗?
查看您用于生成和传输似乎缺失的原始UUID的代码会很有帮助。
答案 1 :(得分:0)
感谢Glen的帮助。我使用的代码是android sdk解释的。
我终于设法使用设备对象获取服务UUID,该设备对象也在intent附加内容中传递,如下所示:
elif action == ACTION_UUID:
print("....... ACTION_UUID .......")
extras = intent.getExtras()
fetchedDevice = extras.get(EXTRA_DEVICE)
fetchedUUIDs = fetchedDevice.getUuids()
if fetchedUUIDs:
for u in fetchedUUIDs:
print u.toString()