android Q以上剪贴板的坑

测试的时候发如今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) {
  	// 这里从新获取一次剪贴板数据
  }
}
复制代码
相关文章
相关标签/搜索