我有一个简单的代码,显示使用plyer通知。
from kivy.app import App
from kivy.lang import Builder
from kivy.utils import platform
from plyer import notification
from kivy.uix.boxlayout import BoxLayout
from kivy.clock import Clock
from kivy.properties import DictProperty
from kivy.uix.label import Label
Builder.load_string("""
<NotificationDemo>:
BoxLayout:
Label:
id: notification_text
text: 'Hi user'
font_size:50
""")
a=0
class NotificationDemo(BoxLayout):
kwargs = DictProperty()
def update(self,dt):
global a
try:
a = a + 1
sms = str(a)
self.ids.notification_text.text = sms
notification.notify(title='hello' , message=sms)
except Exception as error:
self.ids.notification_text.text = str(error)
class ServiceApp(App):
def build(self):
fdir = NotificationDemo()
Clock.schedule_interval(fdir.update, 6)
return fdir
def on_pause(self):
return True
if __name__ == '__main__':
ServiceApp().run()
此代码在Windows和低Android上正常工作。但当我在Android 13上运行此代码时,我得到以下错误。
发生JVM异常:组织试验通知:以S +(版本31及更高版本)为目标要求在创建Pendingintent时指定FLAG_IMMUTABLE或FLAG MUTABLE之一。强烈考虑使用FLAG_IMMUTABLE,仅当某些功能依赖于可变的Pendingintent时才使用FLAG_MUTABLE,例如,需要将其用于内联回复或气泡。java.lang.IllegalArgumentException
我见过类似的问题here和here,但他们没有答案。我应该使用该服务吗?或者我应该在buildozer.spec中做一些事情吗?我真的很感激你能提供的任何帮助。
1条答案
按热度按时间nxowjjhe1#
我还没能找到解决办法,它似乎也没有在任何人的关心名单上。
最后我的解决方案是使用pushy模块(google pushy by fox520 for kivy)和firebases云消息传递,这是一个很好的解决方案,因为它有额外的好处,而且它是免费的云消息传递。
另一个我没有尝试过的选项是,我看到kvdroid包也做通知,并可能与API 31以上的工作,不确定,但值得一看,如果你坚持