您可以编写一个service
检查剪贴板并将接收器附加到ClipboardManager
那里。所以服务类应该是这样的:
class ClipBoardService : Service(), ClipboardManager.OnPrimaryClipChangedListener {
override fun onPrimaryClipChanged() {
val manager = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
if (manager.primaryClip.itemCount > 0) {
val clip = manager.primaryClip.getItemAt(0).text.toString()
toast(clip)
}
}
override fun onBind(intent: Intent): IBinder {
return Binder()
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
initReceiver()
return START_STICKY
}
private fun initReceiver() {
val manager = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
manager.removePrimaryClipChangedListener(this)
manager.addPrimaryClipChangedListener(this)
}
}
并且您可以使用自己的操作创建广播接收器并将其注册到您的活动onStart
并在活动上取消注册onStop
,然后在您的服务中使用sendBroadcast
方法将意图发送到您的活动
不要忘记在清单文件中声明服务
<service
android:name=".clipboard.ClipBoardService"
android:enabled="true"
android:exported="true" />
希望对您有所帮助。