android - 获取从 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
给什么?有什么方法可以识别哪个瓷砖被长按了?
解决方案
EXTRA_COMPONENT_NAME
指向一个ComponentName
对象,而不是一个字符串。
因此,您需要使用getParcelableExtra()
来提取ComponentName
对象:
ComponentName qsTile = intent.getParcelableExtra(Intent.EXTRA_COMPONENT_NAME);
推荐阅读
- java - 可以访问来自 java 运行时的本机 void,就像那样?
- javascript - 按属性值计算数组中的对象并在 HTML 中显示结果
- python - 带有键/值类型对的类型提示字典
- javascript - Vue:滚动监听器问题
- reactjs - 在 react-navigation 5 中将函数作为参数传递
- python - Extract a list from a multidimensional list
- scala - 在 Spring-Data-CosmosDB 中使用 requestContinuation 进行分页
- javascript - 我可以让这个主要的 Finder 代码更简洁吗?
- linq - 我怎样才能让 ToLower 在表达式中工作?
- java - 计算笔画数以为二维数组画布着色