bjzjyang2 2025-07-03 01:43 采纳率: 100%
浏览 8
已结题

如何让App在手机的下来控制中心中有自己的控件按钮

在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

    步骤:

    1. 创建一个新的Xcode项目

      • 选择 App 模板。
      • 然后在 Add Target 中选择 Extension > Today Extension(即“今日扩展”)。
    2. 配置控制中心扩展

      • 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>
        
    3. 编写UI逻辑

      • 使用 TodayViewController 类来创建你的控件界面。
      • 可以添加按钮并绑定点击事件,执行特定操作(如打开App或执行某个功能)。
    4. 测试和部署

      • 在模拟器或真机上运行,并在控制中心中查看是否显示你的按钮。

    注意事项:

    • 控制中心扩展不能直接启动App,只能触发某些后台任务或跳转到App。
    • 需要用户手动将你的扩展添加到控制中心中。

    2. 在安卓中实现

    功能名称:Quick Settings Tile

    步骤:

    1. 创建一个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);
        }
    }
    
    1. 在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>
    
    1. 在主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");
        }
    }
    
    1. 用户手动添加
      • 用户需要进入系统设置 -> 快捷设置 -> 添加你的快捷方式。

    注意事项:

    • 快捷设置需要用户手动添加。
    • 不同品牌手机(如小米)可能有自定义的快捷设置管理界面。

    三、总结

    | 平台 | 实现方式 | 是否需要用户手动添加 | 示例功能 | |------|------------------------|----------------------|----------------| | 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部分实现,但仍受厂商限制。

    如需进一步定制,可以考虑开发 WidgetShortcut 功能。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月6日
  • 已采纳回答 7月3日
  • 修改了问题 7月3日
  • 创建了问题 7月3日