2

我工作的辅助功能为我的Android应用程序,其中之一是宣布用户的通知意向内容。提取通知待处理的辅助

使用下列标准的代码,我可以访问的通知信息:

@Override 
public void onAccessibilityEvent(final AccessibilityEvent event) { 

     final Notification not = (Notification) event.getParcelableData(); 
     final CharSequence tick = not.tickerText; 
     final PendingIntent pi = not.contentIntent; 

但在这里,我被困在我如何从的PendingIntent提取信息的建立,例如,该活动(如果有的话)它指向。

我可以建立的鼻祖,使用进一步规范代码:

final String packageName = event.getPackageName().toString() 

这是在大多数情况下罚款,但许多通知是从谷歌服务框架或Android系统,因此PendingIntent信息将给予进一步的线索至于究竟是什么 - 一个很好的例子就是GTalk,它在Google服务框架的通用包名下。

我读了很多related posts,包括如何action the Pending Intent,但我不能解决如何访问这些信息,或者如果可能的话。

pi.getCreatorPackage(); 
pi.getTargetPackage(); 

都返回谷歌服务框架(在GTalk的情况下)

pi.readPendingIntentOrNullFromParcel(?); 

看起来有点更有前途,但我不知道该怎么办。

我希望你能帮忙,或者告诉我这是不可能的!先谢谢你。

回答

1

不幸的是,这是不可能的。 PendingIntent的内容由ActivityManager管理,并且没有API可用于从ActivityManager获取此数据。

+0

感谢您的回复。它确实显示你是正确的,因为我什么也找不到。我会再给它几天的希望,然后标记你的答案是正确的。你知道我能从反射中得到什么吗? – brandall 2013-05-06 17:13:04

+1

不幸的是,没有。我试过这个。我通过了'PendingIntent','ActivityManager'和'ActivityManagerNative'源代码挖它看起来像有一些包含与'Intent'联的实际数据没有方法(甚至私人的方法)或字段。这些数据均保持了'ActivityManagerService'内有不似乎是访问这个数据的任何可调用的方法。抱歉。 – 2013-05-06 18:02:14

+0

感谢您的确认。标记(不幸!)正确。 – brandall 2013-05-06 18:55:19