2

我正在开发一个应用程序来拦截 toast 消息并在自定义视图中显示它们。

拦截部分很容易使用AccessibilityService.

棘手的部分是如何抑制 toast 消息的出现(或至少使它们不可见)。我知道(据我所知)在正常情况下这是不可能的。

但是有没有人知道任何可以让我抑制 toasts 出现或使它们不可见的技巧?

有root权限可以吗?

注意:我对编程比较陌生。尽管如此,我还是查看了 Toast.java 的 android 源代码(链接)。是否可以拦截该show()方法或任何其他相关方法以阻止它们出现(可能具有 root 权限)?

4

1 回答 1

1

根据 Dianne Hackborn说法,你不能。是的,我知道那篇文章已经有四年多了,但是从那以后我还没有在 SDK 中看到任何东西来克服这个问题。

是的,您可以使用无障碍服务来检测 toast,但这只是为了让您可以做一些额外的事情,比如 TTS,而不是阻止它们。

如果可以的话,那将是糟糕的一天。例如,在您的桌面上粘贴快捷方式的垃圾应用程序。需要超级用户的根应用程序。在这两种情况下,都会弹出一个祝酒词,让您知道正在发生不寻常的事情。这是一件好事,如果我发现了一个抑制敬酒的应用程序,它会立即消失。


抛开道德问题不谈,如果您更改操作系统源并自行编译,您可以这样做,但它仍然只适用于安装了特定 ROM 的用户。

作为另一种选择,您是否尝试过创建自己的 Toast?你可以给它一个 custom View,如果时间合适,它会在正常之后出现。然后它会重叠,你不会看到第一个。我不确定它有多可行,但这是一个想法。

于 2013-08-05T18:05:14.093 回答