android – 如何将PendingIntent保存到SQLite数据库?

android – 如何将PendingIntent保存到SQLite数据库?,第1张

概述我得到NotificationListenerService来拦截Notification并清除,然后想拦截PendingIntent的Notification保存数据库,但PendingIntent没有序列化,所以我想获取PendingIntend内部的Intent然后使用intent.toUri()方法序列化保存到数据库,但这次出现问题,当我在异常时调用startActivity(inten 我得到NotificationListenerService来拦截Notification并清除,然后想拦截PendingIntent的Notification保存到数据库,但PendingIntent没有序列化,所以我想获取PendingIntend内部的Intent然后使用intent.toUri()方法序列化保存到数据库,但这次出现问题,当我在异常时调用startActivity(intent)后对Intent进行去同步:

Process: com.example.joee.cleardatademo,PID: 20441                  java.lang.SecurityException: Permission Denial: starting Intent { act=androID.intent.action.VIEW flg=0x14008000 cmp=com.skype.raIDer/com.skype.androID.app.main.HubActivity (has extras) } from ProcessRecord{4596be88 20441:com.example.joee.cleardatademo/u0a1647} (pID=20441,uID=11647) not exported from uID 11028                      at androID.os.Parcel.readException(Parcel.java:1474)                      at androID.os.Parcel.readException(Parcel.java:1427)                      at androID.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2104)                      at androID.app.Instrumentation.execStartActivity(Instrumentation.java:1419)                      at androID.app.ContextImpl.startActivity(ContextImpl.java:1065)                      at androID.app.ContextImpl.startActivity(ContextImpl.java:1047)                      at com.example.joee.cleardatademo.activity.notificationmanagerActivity.onClick(notificationmanagerActivity.java:110)                      at androID.vIEw.VIEw.performClick(VIEw.java:4569)                      at androID.vIEw.VIEw$PerformClick.run(VIEw.java:18570)                      at androID.os.Handler.handleCallback(Handler.java:733)                      at androID.os.Handler.dispatchMessage(Handler.java:95)                      at androID.os.Looper.loop(Looper.java:212)                      at androID.app.ActivityThread.main(ActivityThread.java:5151)                      at java.lang.reflect.Method.invokeNative(Native Method)                      at java.lang.reflect.Method.invoke(Method.java:515)                      at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)                      at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:684)                      at dalvik.system.NativeStart.main(Native Method)I/Process: Sending signal. PID: 20441 SIG: 9disconnected from the target VM,address: 'localhost:8633',transport: 'socket'

我怎样才能将PendingIntent保存到数据库中?或者其他方法实现和保存PendingIntent效果相同?

解决方法 我认为你误解了PendingIntent的目的.它应该用于在不同于原始应用程序的应用程序中触发它包含的Intent,但具有相同的权限.这是您可以启动其他应用程序内部活动的方法.

它的方式是通过AndroID中的binder机制与原始目标建立连接.即使将PendingIntent保存到Parcel,当您还原PendingIntent时,它仍会与原始对象建立连接,因为它会保存连接令牌.

然而,你所做的是从PendingIntent中撕掉Intent并尝试启动它.它尝试从原始应用程序启动您无权访问的活动.不幸的是,我没有看到你将PendingIntent保存到数据库的方法,因为你需要保存我提到的令牌,并且没有可靠的方法来获取它.它甚至没有存储在Java代码中.

总结

以上是内存溢出为你收集整理的android – 如何将PendingIntent保存到SQLite数据库?全部内容,希望文章能够帮你解决android – 如何将PendingIntent保存到SQLite数据库?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1125922.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存