- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
所以我让我的 AccessibilityService 使用以下代码:
@Override
public void onAccessibilityEvent(AccessibilityEvent event) {
if (event.getEventType() == AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED) {
List<CharSequence> notificationList = event.getText();
for (int i = 0; i < notificationList.size(); i++) {
Toast.makeText(this.getApplicationContext(), notificationList.get(i), 1).show();
}
}
}
它可以很好地读出创建通知时显示的文本(1)。
唯一的问题是,我还需要用户打开通知栏时显示的 (3) 的值。 (2) 对我来说并不重要,但如果知道如何读出来就好了。您可能知道,所有值都可以不同。
那么,我该如何读出(3)?我怀疑这是不可能的,但我的 notificationList
似乎只有一个条目(至少只显示了一个 toast)。
非常感谢!
/edit:我可以用
提取通知包if (!(parcel instanceof Notification)) {
return;
}
final Notification notification = (Notification) parcel;
但是,我不知道如何从 notification
中提取通知消息。或 notification.contentView
/notification.contentIntent
.
有什么想法吗?
/edit:澄清这里的问题:我怎样才能读出(3)?
最佳答案
在过去的几天里,我浪费了几个小时来寻找一种方法来做你(顺便说一下,我也是)想做的事情。在查看了 RemoteViews 的整个源代码两次之后,我发现完成这项任务的唯一方法是古老、丑陋和 hacky 的 Java 反射。
这里是:
Notification notification = (Notification) event.getParcelableData();
RemoteViews views = notification.contentView;
Class secretClass = views.getClass();
try {
Map<Integer, String> text = new HashMap<Integer, String>();
Field outerFields[] = secretClass.getDeclaredFields();
for (int i = 0; i < outerFields.length; i++) {
if (!outerFields[i].getName().equals("mActions")) continue;
outerFields[i].setAccessible(true);
ArrayList<Object> actions = (ArrayList<Object>) outerFields[i]
.get(views);
for (Object action : actions) {
Field innerFields[] = action.getClass().getDeclaredFields();
Object value = null;
Integer type = null;
Integer viewId = null;
for (Field field : innerFields) {
field.setAccessible(true);
if (field.getName().equals("value")) {
value = field.get(action);
} else if (field.getName().equals("type")) {
type = field.getInt(action);
} else if (field.getName().equals("viewId")) {
viewId = field.getInt(action);
}
}
if (type == 9 || type == 10) {
text.put(viewId, value.toString());
}
}
System.out.println("title is: " + text.get(16908310));
System.out.println("info is: " + text.get(16909082));
System.out.println("text is: " + text.get(16908358));
}
} catch (Exception e) {
e.printStackTrace();
}
此代码在装有 Android 4.0.3 的 Nexus S 上运行良好。但是,我没有测试它是否适用于其他版本的 Android。很可能某些值,尤其是 viewId 发生了变化。我认为应该有办法支持所有版本的 Android,而无需对所有可能的 id 进行硬编码,但这是另一个问题的答案...... ;)
PS:您要查找的值(在原始问题中称为“(3)”)是“文本”值。
关于android - 从 parcelable、contentView 或 contentIntent 中提取通知文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9292032/
当我将 UIView 放入 Storyboard中的 UITableViewCell 的 contentView 时,无法使它们具有相同的宽度。为什么是这样?我怎样才能使它们具有相同的宽度? subv
我正在创建一个使用 SAML 和 OAUTH2 的登录名。要获取登录 token ,我需要打开一个 Web View ,用户可以在其中输入他的登录凭据并推送登录。当他完成此操作后,它会重定向到带有 S
我正面临 contentView 高度限制的问题。所有标签都有动态高度,即没有固定高度。我在某处读过设置高度等于 ScrollView 高度。 当前 ViewController 的高度为 870px
A(当新创建单元格时): - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexP
我目前正在编写一个包含按钮和绘图的应用程序。我想做的是将两者合并到一个屏幕上。 setContentView(R.layout.activity_login_page); setContentView
使用卡片创建自定义内容 View 的最佳方式是什么?现在我这样做: fileprivate var contentView: View! fileprivate func prepar
我已经对 UITableViewCell 进行了子类化显示UIImage和两个UILabel subview 。在 TableView 的 View Controller 中,在方法 cellForR
我想禁用 Activity 中的用户交互,以便用户无法触摸 Activity 内容 View 内的 View / subview 。有什么办法可以实现吗? 最佳答案 您可以像这样在 Activity
我是 SwiftUI 的新手。试图推进我的计时器应用程序,我被卡住了。 在我的 ContentView 中,我有两个 ObservedObject,一个是管理计时器功能的 Timer 对象,另一个是存
在我正在开发的应用程序中,有一个多步骤注册,4 个步骤: 为了完成它,我想有一个页面来托管注册步骤的内容 View ,当它通过验证要求时,我将其删除并注入(inject)下一个内容 View 。 这是
我想为 contentView 设置填充从自定义内部 UICollectionViewCell所以它比细胞本身小。 我尝试通过为 contentView 设置 anchor 来做到这一点但这个 Vie
我有一个android项目作为库,这个库包含一个主屏幕。新应用程序需要这个主屏幕(以及库中的其他所有内容),但还需要对所有图形进行更改,并添加一些新按钮,我该怎么做? 我不想编辑库。我可以让新应用程序
我单独创建了一个 contentview,这样我就可以在不同的 ContentPage 中重用它。 这是我的 ContentView.XAML
我有一个 ScrollView,在其中更改其 contentSize (具体高度)。当我这样做时,附加到 ScrollView 的 ContentView 的大小不会相应改变。 ContentView
我有一个简单的 Nativescript 应用程序 - 只有 1 个组件显示标签“Hello World”。在安卓模拟器上运行良好。但是当我尝试在 IOS 设备上预览它时,它给了我这个错误 - 由于未
我正在使用 Grouped UITableView 并添加 UITableViewCells 两个 UILabel,并将它们添加到单元格的 contentView。我还在我的应用程序中在此 UITab
当我在表格 View 上选择一个单元格时,默认情况下它会将其 ContentView 背景颜色更改为浅灰色,我试图覆盖它。 我正在使用以下代码从选区中删除此灰色。但它正在删除该单元格内所有内容(UIV
我有一个带有背景图像的 ViewController,它作为 TableVC 作为它的 subview 。我希望 TableView 是透明的并且已经实现了,tableviewcell 也是透明的。但
我正在尝试以编程方式创建约束,以将这个粉红色的 UIView 置于 UITableViewCell 的中心。但是,当我添加约束时,它们不适用,并且我在控制台中收到一条消息,指出某些 NSAutores
我正在创建 ContentView 的子类 UserPostView 以用作 ListView 中的数据模板。我通过创建 UserPostView 的新实例将项目动态添加到 ListView 的 It
我是一名优秀的程序员,十分优秀!