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) {
  	// 這裏從新獲取一次剪貼板數據
  }
}
複製代碼
相關文章
相關標籤/搜索