在iOS和小米手机里,安装百度App后都会在手机的下拉的控制中心中有百度自己的控件按钮。可以让用户把百度的功能作为应用快捷键添加到下拉的控制中心里。请问这个功能叫什么?如何在iOS和安卓手机里制作呢?谢谢
5条回答 默认 最新
檀越@新空间 2025-07-03 01:44关注上午好☀️☀️☀️️
本答案参考通义千问在iOS和安卓系统中,下拉控制中心(Control Center) 中出现的自定义控件按钮,通常被称为 “快捷操作”(Quick Actions) 或 “控制中心扩展”(Control Center Extension)。具体实现方式因平台而异。
一、这个功能的名称
| 平台 | 功能名称 | 描述 | |------|----------------------|------| | iOS | Control Center Extension | 允许开发者在控制中心添加自定义按钮,用于快速启动应用功能。 | | 安卓 | Quick Settings Tile | 在下拉菜单中添加自定义的快捷设置项,如音乐播放、天气等。 |
二、如何实现该功能
1. 在iOS中实现
功能名称:Control Center Extension
步骤:
-
创建一个新的Xcode项目
- 选择 App 模板。
- 然后在 Add Target 中选择 Extension > Today Extension(即“今日扩展”)。
-
配置控制中心扩展
- 在
Info.plist中设置:<key>NSExtension</key> <dict> <key>NSExtensionAttributes</key> <dict> <key>NCWidgetProvidesData</key> <true/> </dict> <key>NSExtensionPrincipalClass</key> <string>$(PRODUCT_MODULE_NAME).TodayViewController</string> <key>NSExtensionPointIdentifier</key> <string>com.apple.widget-extension</string> </dict>
- 在
-
编写UI逻辑
- 使用
TodayViewController类来创建你的控件界面。 - 可以添加按钮并绑定点击事件,执行特定操作(如打开App或执行某个功能)。
- 使用
-
测试和部署
- 在模拟器或真机上运行,并在控制中心中查看是否显示你的按钮。
注意事项:
- 控制中心扩展不能直接启动App,只能触发某些后台任务或跳转到App。
- 需要用户手动将你的扩展添加到控制中心中。
2. 在安卓中实现
功能名称:Quick Settings Tile
步骤:
- 创建一个Service类
- 创建一个继承自
TileService的类,例如:
- 创建一个继承自
public class MyQuickSettingTile extends TileService { @Override public void onTileAdded() { super.onTileAdded(); // 当用户添加此快捷方式时触发 } @Override public void onTileRemoved() { super.onTileRemoved(); // 当用户移除此快捷方式时触发 } @Override public void onClick() { super.onClick(); // 点击快捷方式时执行的操作 Intent intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } }- 在AndroidManifest.xml中注册服务
<service android:name=".MyQuickSettingTile" android:label="My Quick Setting" android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"> <intent-filter> <action android:name="android.service.quicksettings.action.QS_TILE" /> </intent-filter> </service>- 在主Activity中启用快捷方式
// 在onCreate中调用以下代码 if (Settings.Secure.getString(getContentResolver(), "enabled_quick_settings_tiles") != null) { String tiles = Settings.Secure.getString(getContentResolver(), "enabled_quick_settings_tiles"); if (!tiles.contains("my_quick_setting")) { Settings.Secure.putString(getContentResolver(), "enabled_quick_settings_tiles", tiles + ",my_quick_setting"); } }- 用户手动添加
- 用户需要进入系统设置 -> 快捷设置 -> 添加你的快捷方式。
注意事项:
- 快捷设置需要用户手动添加。
- 不同品牌手机(如小米)可能有自定义的快捷设置管理界面。
三、总结
| 平台 | 实现方式 | 是否需要用户手动添加 | 示例功能 | |------|------------------------|----------------------|----------------| | iOS | Control Center Extension | 是 | 打开App/执行任务 | | 安卓 | Quick Settings Tile | 是 | 打开App/执行任务 |
四、参考示例(修改后的代码)
iOS(Swift)示例:
import UIKit import NotificationCenter class TodayViewController: UIViewController, NCWidgetProviding { override func viewDidLoad() { super.viewDidLoad() let button = UIButton(type: .system) button.setTitle("百度搜索", for: .normal) button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside) view.addSubview(button) button.translatesAutoresizingMaskIntoConstraints = false NSLayoutConstraint.activate([ button.centerXAnchor.constraint(equalTo: view.centerXAnchor), button.centerYAnchor.constraint(equalTo: view.centerYAnchor) ]) } @objc func buttonTapped() { let url = URL(string: "https://www.baidu.com")! if UIApplication.shared.canOpenURL(url) { UIApplication.shared.open(url, options: [:], completionHandler: nil) } } }安卓(Java)示例:
public class MyQuickSettingTile extends TileService { @Override public void onClick() { super.onClick(); Intent intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } }
五、建议
- iOS:使用
Control Center Extension,但需注意权限限制。 - 安卓:使用
Quick Settings Tile,兼容性较好,但需要用户手动添加。
如果你希望用户无需手动添加即可看到快捷按钮,目前iOS不支持,安卓可通过系统API部分实现,但仍受厂商限制。
如需进一步定制,可以考虑开发 Widget 或 Shortcut 功能。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报-