Android通知kivy中的FLAG_IMMUTABLE或FLAG MUTABLE

pbwdgjma  于 2023-02-27  发布在  Android
关注(0)|答案(1)|浏览(238)

我有一个简单的代码,显示使用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
我见过类似的问题herehere,但他们没有答案。我应该使用该服务吗?或者我应该在buildozer.spec中做一些事情吗?我真的很感激你能提供的任何帮助。

nxowjjhe

nxowjjhe1#

我还没能找到解决办法,它似乎也没有在任何人的关心名单上。
最后我的解决方案是使用pushy模块(google pushy by fox520 for kivy)和firebases云消息传递,这是一个很好的解决方案,因为它有额外的好处,而且它是免费的云消息传递。
另一个我没有尝试过的选项是,我看到kvdroid包也做通知,并可能与API 31以上的工作,不确定,但值得一看,如果你坚持

相关问题