使用Qpython在Android中接听电话

时间:2015-02-24 14:56:48

标签: android python call qpython

我试图在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']

错误,因为需要是整数或类似的东西。

2 个答案:

答案 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层上的某个地方存在错误。

这不是问题的答案,但我没有权利撰写评论。所以这些是我对这个问题的观察。