【问题标题】:How to view all system generated Intents?如何查看所有系统生成的 Intent?
【发布时间】:2013-09-25 06:10:31
【问题描述】:

有没有办法随时查看由 Android 操作系统生成但可能被活动过滤的所有意图?具体来说,我正在测试 onHoverListener - 我想知道我的活动是否正在丢弃悬停运动事件或者是否没有生成(系统不支持/其他一些问题)

理想情况下,我希望记录我的活动的所有意图 - 但其他一些技巧也可以。

【问题讨论】:

    标签: android android-intent onhover


    【解决方案1】:

    Android Intents 能够启动新的活动、服务、完成任何操作,例如发送电子邮件、点击照片、从内容提供商获取数据等。 捕获任何此类意图,您需要使用与系统意图相同的操作将意图过滤器注册到您的活动。[如果触发相同的意图,框架将选择您的活动/应用程序,因此您可以如果用户愿意,拦截这些意图] 这可能有点太多了,因为会为不同的 android 组件声明太多的操作。但是一些流行的例子是发送短信、选择联系人、发送邮件。 更多信息请参考:http://developer.android.com/guide/components/intents-filters.html

    Events 和 Intents 完全不同,你的应用程序生成的所有事件都将进入 UI 线程的事件处理程序队列。 所以为了拦截你应该为你的活动组件设置适当的事件监听器。

    【讨论】:

    • 啊,是的,对于 Intent 和 Events 之间的混淆感到抱歉 - 我的意思是我有一个 onHoverListener 并且它没有接收悬停事件 - 我想知道是不是因为它缺少一些必要的意图过滤器(我无权访问 Manifest)
    • 监听器与意图过滤器无关
    • 在 Manifest 中没有必要的 Intent 过滤器的情况下,onHoverListener 是否可以工作?
    • 是的,这些 hoverListener 和 Intent 过滤器根本不相关
    【解决方案2】:

    尝试使用 onTouch 代替。 setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(event.getAction() == MotionEvent.ACTION_DOWN){
                //Button Pressed
            }
            if(event.getAction() == MotionEvent.ACTION_UP){
                 //finger was lifted
            }
            return false;
        }`
    

    【讨论】:

      猜你喜欢
      • 2012-05-10
      • 2018-08-05
      • 2021-09-22
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多