測試的時候發如今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) {
// 這裏從新獲取一次剪貼板數據
}
}
複製代碼