Входящий звонок в Android с Qpython

Я пытаюсь получить номер входящего вызова с помощью qpython на Android 4.4.3.

Уже попробуйте это:

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... result = foo() [' abc'] Но вообще не работает, потому что: Это не работает:

import android
droid = android.Android()

И когда я пытаюсь это:

outerDict = droid.readPhoneState()
innerDict = outerDict['result']
number = innerDict['incomingNumber']

Ошибка, потому что должно быть целое число или что-то в этом роде.


person alien4u    schedule 24.02.2015    source источник
comment
Трассировка очень поможет.   -  person user2097159    schedule 24.02.2015
comment
java.lang.NullPointerException Нет   -  person alien4u    schedule 24.02.2015


Ответы (2)


QPython не включает разрешение READ_PHONE_STATE, вместо этого используйте QPython3.

person River    schedule 05.03.2015

Я думаю, что сталкиваюсь с подобным поведением, просто запуская тестовый скрипт, который поставляется с приложением QPython (с использованием QPython3). Результат:

Running test_phone_state... java.lang.NullPointerException PASS

Пытался поймать исключение с помощью python, кроме блока, но он просто переходит непосредственно к предложению finally, поэтому я не могу получить трассировку. Я думаю, что распечатка «java.lang.NullPointerException» исходит из нижнего уровня фасада java, а трассировка ошибок недоступна на уровне python.

Однако тестовый код использует импорт sl4a вместо androidhelper. Я не уверен, в чем разница. Исключение нулевого указателя распечатывается при вызове startTrackingPhoneState. Мне интересно, связано ли это со старой версией Android (с использованием 4.4.2) или старой версией Android Facade, или, возможно, документация и тестовый сценарий, как использовать startTrackingPhoneState, устарели. В худшем случае это ошибка где-то на слое Android Facade.

Это не совсем ответ на вопрос, но я не имею права писать комментарии. Таковы мои наблюдения по этому вопросу.

person MattiR    schedule 12.05.2016