首页 > 解决方案 > 获取从 ACTION_QS_TILE_PREFERENCES 长按的 Quick Tile

问题描述

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

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

根据文档,可能应该有一种方法来解决这个问题

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

我假设这将返回实现的类TileService,但调用intent.getStringExtra(Intent.EXTRA_COMPONENT_NAME)根本没有给出任何东西。

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

标签: android

解决方案


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

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

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

推荐阅读