【问题标题】:Android - How to create an Activity that manages multiple icons on Home Screen?Android - 如何创建一个管理主屏幕上多个图标的活动?
【发布时间】:2014-04-19 05:07:42
【问题描述】:
我正在尝试创建一个提供屏幕来选择图标的活动。选择此选项后,此应用应按以下方式运行:
1- 每个选定的图标都应出现在主屏幕中,并带有自己的图像。这些图标不应作为应用程序目录中的应用程序提供。它们应该表现为简单的快捷方式,由主要活动直接添加或删除;
2 - 当我按下主屏幕上的这些图标之一时,我想启动一个应该具有特定行为的 Activity,具体取决于按下的图标。
是否有可能实现这个要求?你能帮我提供一些指导方针或解决方法来解决这个问题吗?
非常感谢您的支持。
何塞·雷维拉略
【问题讨论】:
标签:
android
android-activity
icons
homescreen
【解决方案1】:
每个选定的图标都应出现在主屏幕中,并带有自己的图像
我假设“它自己的图像”==“选定的图标”。
您不能在运行时更改与活动关联的图标。如果图标列表相当小,并且它们都是可绘制资源,您可以尝试为每个图标设置一个 <activity-alias>,默认情况下全部禁用,然后使用 PackageManager 和 setComponentEnabledSetting() 启用用户选择的一个。如果用户可以多次选择同一个图标,则每个图标需要有 N 个 <activity-alias> 元素(因此应用程序可以在每次选择时显示在启动器中)。这很快就会变得非常冗长。
它们应该表现为简单的快捷方式,由主要活动直接添加或删除
如果“简单快捷方式”是指“启动器/应用程序抽屉中的图标”,<activity-alias> 元素将每个都具有标准 MAIN/LAUNCHER<intent-filter>,因此您启用的元素将显示在那里。
但请注意,并非所有主屏幕实现都会检测到您何时启用和禁用这些功能,因此如果图标未显示,用户可能需要重新启动。
当我在主屏幕上按下其中一个图标时,我想启动一个应该具有特定行为的 Activity,具体取决于按下的图标
您无法更改<activity-alias> 在运行时指向的活动——这是硬编码到清单中的。要么:
您将为所有图标使用一个活动,每个不同的图标使用不同的片段,或者
您需要让<activity-alias> 元素都指向一个使用Theme.NoDisplay 的活动,这反过来可以确定要启动的正确实际活动,或者
每个图标需要 M 个 <activity-alias> 元素,每个可能的活动一个,以便为正确的图标/活动组合启用正确的元素
是否有可能实现这个要求?
总而言之,这并不容易实现,尽管理论上应该是可能的。