我试图在android 4.4.3上使用qpython获取来电号码
已经尝试过这个:
import androidhelper
w=1
while (w == 1):
droid = androidhelper.Android()
droid.startTrackingPhoneState()
phonest = droid.readPhoneState()
number = phonest[2] # If i try to use ['incomingNumber'] not work
if number != None:
droid.makeToast('Call from '+number)
我总是得到NullPointer异常
我读到了这个: python function call syntax ... result = foo() ['abc'] 但是根本不起作用,因为: 这不起作用:
import android
droid = android.Android()
当我尝试这个时:
outerDict = droid.readPhoneState()
innerDict = outerDict['result']
number = innerDict['incomingNumber']
错误,因为需要是整数或类似的东西。
答案 0 :(得分:0)
QPython没有包含READ_PHONE_STATE权限,请改用QPython3。
答案 1 :(得分:0)
我认为我正面临着类似的行为,只需运行QPython应用程序附带的测试脚本(使用QPython3)。输出是:
Running test_phone_state... java.lang.NullPointerException PASS
尝试用python捕获除了块之外的异常,但它只是直接转到finally子句,所以我无法获得回溯。我认为“java.lang.NullPointerException”打印输出来自较低的java外观级别,并且无法在python层中访问错误跟踪。
然而,testcode使用sl4a import而不是androidhelper。我不确定那里有什么不同。调用startTrackingPhoneState时会打印出空指针异常。 我想知道这是否与旧的Android版本(使用4.4.2),或旧的Android Facade版本,或者文档和测试脚本如何使用startTrackingPhoneState相关。最糟糕的情况是Android Facade层上的某个地方存在错误。
这不是问题的答案,但我没有权利撰写评论。所以这些是我对这个问题的观察。