无法在后台服务安卓中捕获剪贴板事件



我正在尝试捕捉后台服务中的clipboardChanged事件

public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent i = new Intent(MainActivity.this, TranslateService.class);
        startService(i);
    }
}

public class TranslateService extends IntentService implements ClipboardManager.OnPrimaryClipChangedListener {
    public TranslateService() {
        super(null);
    }
    public TranslateService(String name) {
        super(name);
        ClipboardManager manager = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
        manager.addPrimaryClipChangedListener(this);
    }

    @Override
    protected void onHandleIntent(Intent intent) {
    }
    @Override
    public void onPrimaryClipChanged() {
        Toast.makeText(this, "Working", Toast.LENGTH_LONG).show();
    }
}

如果事件被触发,它应该使toast"Working"。我还尝试创建ClipboardManager并在onHandleIntent中添加监听器,它也不起作用。什么好主意吗?

当调用默认构造函数时,您没有将侦听器添加到ClipboardManager

我想你的意思是在默认构造函数中使用this(null),而不是直接调用super(null)

public TranslateService() {
    this(null);
}

最新更新