Android10适配之剪切板

/ 0评 / 5

剪贴板数据的访问权限

在Android10上面,除非应用是默认输入法 (IME) 或是目前处于焦点的应用,否则它无法访问 Android 10 或更高版本平台上的剪贴板数据。文档链接

适配方案

方案一:在onResume中,通过post延时到界面拥有焦点时读取剪切板

@Override
protected void onResume() {
    super.onResume();
    getWindow().getDecorView().post(new Runnable() {
        @Override
        public void run() {
            mBinding.clipText.setText(getClipData(MainActivity.this));
        }
    });
}

方案二:在onCreate中,通过addOnWindowFocusChangeListener去监听当且界面的焦点变化,不过需要记得的是,读取完剪切板需要remove监听

protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	getWindow().getDecorView().getViewTreeObserver().addOnWindowFocusChangeListener(new ViewTreeObserver.OnWindowFocusChangeListener() {
		@Override
		public void onWindowFocusChanged(boolean hasFocus) {
			if (hasFocus) {
				mBinding.clipText.setText(getClipData(MainActivity.this));
				getWindow().getDecorView().getViewTreeObserver().removeOnWindowFocusChangeListener(this);
			}
		}
	});
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注