【问题标题】:Get Quick Tile which was long-pressed from ACTION_QS_TILE_PREFERENCES获取从 ACTION_QS_TILE_PREFERENCES 长按的 Quick Tile
【发布时间】:2018-06-20 18:52:47
【问题描述】:

我的应用中有多个 Quick 磁贴,它们都做不同的事情。我面临的问题是,我希望我的所有快速磁贴都具有长按操作来配置有关该磁贴的特定设置,因此我在用于活动的意图过滤器中添加了android.service.quicksettings.action.QS_TILE_PREFERENCES

问题是似乎无法知道哪个图块被长按,只是一个图块实际上是长按的。

根据documentation 应该有办法解决这个问题

此意图还可以定义一个 Intent.EXTRA_COMPONENT_NAME 值来指示导致首选项打开的 ComponentName。

我认为这将返回实现 TileService 的类,但调用 intent.getStringExtra(Intent.EXTRA_COMPONENT_NAME) 根本没有提供任何东西。

我是否误解了文档?这个Intent.EXTRA_COMPONENT_NAME 应该提供什么?有什么方法可以识别哪个图块被长按了?

【问题讨论】:

    标签: android


    【解决方案1】:

    EXTRA_COMPONENT_NAME 指向 ComponentName 对象,而不是字符串。

    因此需要使用getParcelableExtra()来提取ComponentName对象:

    ComponentName qsTile = intent.getParcelableExtra(Intent.EXTRA_COMPONENT_NAME);
    

    【讨论】:

    • 它仍然返回 null。我忘了补充说这是 xamarin,但这不应该对我收集的内容有任何影响。
    • 这里工作正常。也许可以尝试使用一个小示例应用程序来确认它是否适合您。
    • 在我的模拟器上运行良好(API 24 和 29)。然而,在我的带有 Android 9.1 的华为 P20 Pro 上,ComponentName 也始终为空。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多