在安卓手机上添加一言组件

突发奇想想给手机加个一言组件.搜索了一下 F-droid 和 github,现成的几个软件都不太满意.

发现手机上装的快捷方式 app(包名为 com.syyf.quickpay)支持在桌面上添加文本组件,还能用 shell 命令修改文本内容.我有一计.jpg

使用以下指令可修改此部件: am broadcast -a appwidget.action.update_text --ei widget_id 7 --es text '文本内容' --ei tvSize 16 com.syyf.quickpay

自定义中添加一个 shell 命令,在文本组件的关联任务中设置一下,就可以通过点击来刷新一言了.

接下来的问题就是如何获取一段句子.shufperl 在安卓里没有,但是 awk 是有的.面向 AI 编程后可以得到:

awk 'BEGIN { srand() } rand() < 1/NR { line=$0 } END { print line }' filename

可以随机抽取文件中的一行内容.那么如果我的文字带有换行呢?

把换行用 \n 代替.

awk 'BEGIN{ srand() } rand() < 1/NR { line=$0 } END { gsub(/\\n/, "\n", line); printf line}' filename

这样就行了.

创建目录 /sdcard/hitokoto/,在里面放点 txt 文件即可随机抽取.用 termux 测试了一下效果还行.

使用以下指令可修改此部件:am broadcast -a appwidget.action.update_text --ei widget_id 7 --es text '文本内容' --ei tvSize 16 com.syyf.quickpay

把抽取的一言套到修改文件的代码里,保存成一个快捷方式:

am broadcast -a appwidget.action.update_text --ei widget_id 7 --es text "$(awk 'BEGIN { srand() } rand() < 1/NR { line=$0 } END { gsub(/\\n/,"\n",line); print line }' /sdcard/hitokoto/*.txt)" --ei tvSize 16 com.syyf.quickpay

即可实现点击文本框时刷新一言.

Hitokoto - 一言 提供了在线接口和可供下载的 json 文件.

posted @ 2025-07-08 22:24  383494  阅读(22)  评论(0)    收藏  举报