2015-02-09 101 views
0

我有一個設置菜單。我希望一些用戶能夠訪問此菜單中的一個特定頁面(所有用戶必須登錄,有些用戶具有管理員訪問權限,一些用戶只能訪問) - 僅限管理員用戶。禁止訪問Android中的活動

我已經想出瞭如何從菜單中刪除這個特定的頁面,如果用戶不是管理員。

但我認爲它也是一個很好的做法,以及在實際活動(java)頁面上添加一個檢查。理論上,連接菜單中的鏈接不應該訪問此頁面 - 但正如我所說,我認爲最好添加一個額外的檢查。

如何在Java代碼中簡單地「禁用」一個活動(灰色屏幕,除了後退按鈕之外什麼都不能觸及)?

+0

添加您在活動中顯示/隱藏的半透明且可點擊的全屏疊加視圖(但沒有定義點擊行爲)? – stkent 2015-02-09 01:21:47

+0

沒有簡單的選項嗎?它並不需要那麼花哨 - 正如我所說,這只是一種預防措施,理論上它不應該永遠可見。 – b85411 2015-02-09 01:24:12

+0

覆蓋dispatchTouchEvent並返回false,防止所有觸摸事件傳播? – stkent 2015-02-09 01:24:36

回答

1

一個簡單的方法是在您的活動中覆蓋dispatchTouchEvent。例如:

@Override 
public boolean dispatchTouchEvent(@NonNull MotionEvent event) { 
    if (shouldBlockTouchEvents) { 
     return true; 
    } else { 
     return super.dispatchTouchEvent(event); 
    } 
} 

這可以確保在您不是故意阻止觸摸事件時發生默認分派。

+0

謝謝。你知道'dispatchTouchEvent()'之前還是之後調用'onCreate()'? – b85411 2015-02-09 01:33:27

+0

'dispatchTouchEvent'只會在實際發生觸摸事件時觸發;我認爲這必須在'onCreate'之後。順便說一下,我不知道這種方法是否會阻止關鍵事件,因此帶鍵盤的用戶可能仍然能夠瀏覽活動。不確定,但。 – stkent 2015-02-09 01:34:46

+0

@ b85411用示例實現更新了答案。 – stkent 2015-02-09 13:28:50