我正在寻找一种方法来从WhatsApp通知中获取消息,当有多行时。Java反射从Android上的内部类获取WhatsApp的消息通知
我想通过Android中的Reflection从内部类中的私有变量中获取值。我正尝试获取用于构建InboxStyle通知的charsequence的'mTexts'ArrayList。我正在寻找whatsapp自最后一次更新之后的消息,其中没有EXTRA on notification by listeListener(),它具有多行通知(我只能得到第一行)。
任何获得线条的方法都是值得的。
这是我的代码。
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
super.onNotificationPosted(sbn);
Class[] declaredClasses = sbn.getNotification().getClass().getClasses();
for (Class c : declaredClasses){
if(c.getName().contains("Notification$InboxStyle")){
Class inboxStyleClass = c.getClass();
Field[] fields = inboxStyleClass.getDeclaredFields();
for(Field field : fields){
if(field.getName().contains("mText")){
Field fmText = null;
try {
fmText = inboxStyleClass.getDeclaredField("mTexts");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
ArrayList<CharSequence> mTextsArrayList = null;
fmText.setAccessible(true);
try{
mTextsArrayList = (ArrayList<CharSequence>) fmText.get(**WICH OBJECT MAY USE HERE**);
}catch(IllegalAccessException e){
e.printStackTrace();
}
for(CharSequence value : mTextsArrayList){
Log.i("XXX","Results are: "+value.toString());
}
}
}
}
}
}
我正确地到达多行文字场,但我不能得到它的价值。
我试图用一个新的Notification.InboxStyle()对象
Notification.InboxStyle iStyleObjectToGetTheValue = new Notification.InboxStyle();
,看它是否运作良好,它也
inboxStyle = (ArrayList<CharSequence>) fmText.get(iStyleObjectToGetTheValue);
,但我需要从通知的值。任何想法,我怎么能实现这一点?
我也试图得到消息系充气RemoteViews,您可以通过StatusBarNotification.getNotification()检索。THE_REMOTE_VIEW因为使用设备监视器您可以对设备的screenshoot看到的的ID意见......但没有幸运的。
任何获得线条的方法都是值得的。
所有的帮助是欢迎的! 谢谢!
你能不能从通知获取内容查看/ bigContentView并检查他们找到文本:建立通知)时,才应使用? –
如何检查远程视图? - 我试图通过获取视图节点进行搜索,但没有发现任何可靠的...也许我做错了... – Dan