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() 

Это хорошо в большинстве случаев, но многие уведомления взяты из рамок Google Services или Android системы и, следовательно, PendingIntent информации даст дополнительные подсказки что именно они представляют собой. Хорошим примером этого может быть GTalk, который находится под общим названием пакета службы Google Services Framework.

Я читал много related posts, включая как action the Pending Intent, но я не могу решить, как просто получить доступ к этой информации, или если это возможно.

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

Оба возвращаются Google Services Framework (в случае GTalk)

pi.readPendingIntentOrNullFromParcel(?); 

выглядит немного более перспективным, но я не уверен, что с ним делать.

Надеюсь, вы можете помочь или сказать мне, что это невозможно! Заранее спасибо.

ответ

1

К сожалению, это невозможно. Содержимое PendingIntent управляется ActivityManager и нет API, доступного для получения этих данных из ActivityManager.

+0

Спасибо за ваш ответ. Кажется, ты прав, потому что я ничего не могу найти. Я дам ему еще несколько дней в надежде, а затем отметьте, что вы ответите правильно. Есть ли что-нибудь, что я могу получить от Reflection, знаете ли вы? – brandall

+1

К сожалению, нет. Я пробовал это. Я вырыл исходный код для «PendingIntent», «ActivityManager» и «ActivityManagerNative», и похоже, что нет методов (даже частных методов) или полей, содержащих фактические данные, связанные с «Intent». Эти данные все хранятся в 'ActivityManagerService', и, похоже, нет никаких вызываемых методов доступа к этим данным. Сожалею. –

+0

Спасибо за подтверждение. Отмечено (к сожалению!) Как правильно. – brandall