Можно ли получить текст в расширенном уведомлении в statusbar
? Это означает, что текст устанавливает мой Notification.BitTextStyle.bigText()
, например, в уведомлении по электронной почте от Gmail.
Я хотел бы получить его с помощью Notification.extras, но, похоже, нет константы, такой как, например, Notification.EXTRA_BIG_TEXT
, которая позволяла бы этому работать.
Есть ли другой способ получить этот текст? Кроме того, когда я использую
Строка bigTitle = mExtras.getString(Notification.EXTRA_TITLE_BIG;
он возвращает null
, есть идеи, почему? Я использую это, чтобы получить тему письма (Testing the new Gmail notification shortcuts
-> см. ссылку ниже).
Ниже приведен пример расширенного уведомления Gmail: (Я хочу получить следующий текст ->
Теперь вы получаете кнопки быстрого доступа для ответа и архивации в...
Изображение уведомления Gmail (невозможно опубликовать картинки с репутацией менее 10, извините)
В качестве альтернативы я также пробовал следующее:
RemoteViews rv = mNotification.contentView;
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ViewGroup localView = (ViewGroup) inflater.inflate(rv.getLayoutId(), null);
rv.reapply(getApplicationContext(), localView);
everything = new StringBuilder(150);
for(int i=0; i<((ViewGroup)localView).getChildCount(); ++i) {
View nextChild = ((ViewGroup)localView).getChildAt(i);
try{
TextView tv = (TextView) localView.findViewById(nextChild.getId());
everything.append(tv.getText().toString());
}catch(Exception e){
continue;
}
}
Log.i("abc", everything.toString());
Но это тоже не сработало для меня, казалось, я никогда не получал никакого текста ни от одного из представлений.
Обновление:
Когда я использую следующий код для получения текста из уведомления...:
body = mExtras.getString(Notification.EXTRA_TEXT);
... все работает хорошо, если это не уведомление Gmail/Email:
Как только я получаю уведомление Gmail, я получаю следующее сообщение об ошибке:
08-19 20:19:37.379: W/Bundle(6646): Key android.text expected String but value was a android.text.SpannableString. The default value <null> was returned.
08-19 20:19:37.379: W/Bundle(6646): Attempt to cast generated internal exception:
08-19 20:19:37.379: W/Bundle(6646): java.lang.ClassCastException: android.text.SpannableString cannot be cast to java.lang.String
08-19 20:19:37.379: W/Bundle(6646): at android.os.Bundle.getString(Bundle.java:1121)
08-19 20:19:37.379: W/Bundle(6646): at com.myprojectabc.storage.Core$mainmethod$1.run(Core.java:394)
08-19 20:19:37.379: W/Bundle(6646): at android.os.Handler.handleCallback(Handler.java:733)
08-19 20:19:37.379: W/Bundle(6646): at android.os.Handler.dispatchMessage(Handler.java:95)
08-19 20:19:37.379: W/Bundle(6646): at android.os.Looper.loop(Looper.java:136)
08-19 20:19:37.379: W/Bundle(6646): at android.app.ActivityThread.main(ActivityThread.java:5001)
08-19 20:19:37.379: W/Bundle(6646): at java.lang.reflect.Method.invokeNative(Native Method)
08-19 20:19:37.379: W/Bundle(6646): at java.lang.reflect.Method.invoke(Method.java:515)
08-19 20:19:37.379: W/Bundle(6646): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
08-19 20:19:37.379: W/Bundle(6646): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
08-19 20:19:37.379: W/Bundle(6646): at dalvik.system.NativeStart.main(Native Method)
Если я затем попытаюсь решить эту проблему, изменив ее на это...
body = mExtras.getString(Notification.EXTRA_TEXT).toString();
...я получаю NullPointerException
Был бы очень признателен, если бы кто-нибудь помог мне здесь
Спасибо, REG1