测试的时候发如今android Q以上的手机上当 activity 页面失去焦点的时候是获取不到 剪贴板的数据的,直接返回null。
典型的场景就是,口令功能的实现,在APP首页中获取剪贴板内容识别口令;同时在首页也作申请权限操做。
系统的受权弹窗弹出来的时候就会致使 activity 失去焦点,拿不到剪贴板的数据。 我是实现的ActivityLifecycleCallbacks。而后在onActivityStarted中作判断获取剪贴板内容。 解决上面的问题很简单,在获取剪贴板内容是作个判断,若是为null,就作个标记;而后在 onActivityResumed 中根据标记的状态再获取一次剪贴板数据就能够了。java
public class StatisticActivityLifecycleCallback implements Application.ActivityLifecycleCallbacks {
private boolean isNullData = false; // 是否拿到剪贴板数据
@Override
public void onActivityStarted(final Activity activity){
....
ClipboardManager clipboardManager = (ClipboardManager) MSApplication.mContext.getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clipData = clipboardManager.getPrimaryClip();
if(clipData == null) {
isNullData = true;
// 这里获取剪贴板数据
} else {
isNullData = false;
}
....
}
@Override
public void onActivityResumed(Activity activity) {
// 这里从新获取一次剪贴板数据
}
}
复制代码