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