如何程序化在主屏下拉快捷栏手电筒旁添加应用快捷按钮
实现快速设置Tile添加二维码阅读器入口的方案
可行性说明
安卓从API 24(Android 7.0)开始支持自定义快速设置Tile,可实现你要的下拉快捷栏添加二维码阅读器按钮、免登/快速启动的需求。但APK安装时无法自动强制添加该按钮到快捷栏——这是用户可控的系统行为,不过可以引导用户添加,或在应用首次启动时触发系统识别Tile。
具体实现步骤
1. 编写快速设置Tile服务类
创建继承自TileService的服务,重写核心方法处理点击、状态更新逻辑:
public class QrTileService extends TileService { @Override public void onClick() { super.onClick(); // 启动二维码阅读器页面:未登录时启动免登组件,已登录则直接跳转至对应功能 Intent intent = new Intent(this, QrReaderActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); // 更新Tile状态(可选,标记为激活态) Tile tile = getQsTile(); tile.setState(Tile.STATE_ACTIVE); tile.updateTile(); } @Override public void onTileAdded() { super.onTileAdded(); // 用户添加Tile时的初始化操作,比如预加载阅读器资源 } }
2. 配置Manifest文件
在AndroidManifest.xml中注册Tile服务,声明必要属性与权限:
<service android:name=".QrTileService" android:label="二维码阅读器" android:icon="@drawable/ic_qr_tile" android:permission="android.permission.BIND_QUICK_SETTINGS_TILE"> <intent-filter> <action android:name="android.service.quicksettings.action.QS_TILE" /> </intent-filter> </service>
android:label和android:icon对应快捷栏按钮的显示文本与图标BIND_QUICK_SETTINGS_TILE为系统自动授予的必填权限,无需用户手动同意
3. 引导用户添加Tile
系统不允许应用自动添加Tile,需在应用首次启动时引导用户操作:
- 调用
requestListeningState()让系统识别你的自定义Tile - 弹出提示告知用户:长按快捷栏空白处进入编辑模式,即可添加二维码阅读器按钮
示例代码:
// 在应用启动Activity的onCreate中调用 TileService.requestListeningState(this, new ComponentName(this, QrTileService.class));
关键限制说明
- 系统版本门槛:仅支持Android 7.0(API 24)及以上版本,低版本系统无法使用该功能
- 用户控制权:无法强制自动添加Tile,必须由用户手动在快捷栏编辑模式中完成添加
- 权限范围:无需额外危险权限,仅需上述Manifest中声明的系统权限
免登/快速访问逻辑处理
- 免登启动:直接启动不依赖登录状态的二维码阅读器Activity,该组件独立运行、无需校验用户身份
- 登录状态快速访问:在
onClick()方法中判断用户登录状态,已登录则跳转至绑定用户信息的功能页面,未登录则启动免登阅读器
内容的提问来源于stack exchange,提问作者user6090578
相关产品推荐
相关产品推荐

