问题描述
我正在尝试使用 pyjnius 获取 kivy 中的传入号码。
我的服务/main.py
from android.broadcast import broadcastReceiver
from jnius import autoclass,cast
import time
class CallReceiver:
def build(self):
context = autoclass('android.content.Context')
intent = autoclass('android.content.Intent')
self.br = broadcastReceiver(self.on_broadcast,actions=['headset_plug'])
self.br.start()
self.on_broadcast(context,intent)
def on_broadcast(self,context,intent):
#intent = autoclass('android.content.Intent')
mContext = autoclass('android.content.Context')
pythonActivity = autoclass('org.kivy.android.PythonService')
TelephonyManager = autoclass('android.telephony.TelephonyManager')
telephonyManager = cast('android.telephony.TelephonyManager',pythonActivity.mService.getSystemService(mContext.TELEPHONY_SERVICE))
while True:
simstate = telephonyManager.getCallState()
if simstate == 1:
String = autoclass('java.lang.String')
phoneNumber = intent.getStringExtra(String('telephonyManager .EXTRA_INCOMING_NUMBER'))
#print(phoneNumber)
phoneNumber = intent.getStringExtra(String('telephonyManager .EXTRA_INCOMING_NUMBER'))
print(phoneNumber)
print(type(phoneNumber))
print('CALLING!!!')
#time.sleep(3)
elif simstate == 0:
print('NOT CALLING!!!')
#time.sleep(3)
def on_pause(self):
self.br.stop()
return True
def on_resume(self):
self.br.start()
if __name__ == '__main__':
callreceiver = CallReceiver()
callreceiver.build()
我收到来电状态,但总是“无”电话号码。 在日志中我看到这个:
I/python: None
<class 'nonetype'>
CALLING!!!
为什么广播接收器不使用动作“phone_state”,而是使用“headset_plug”?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)