2017-02-25 28 views
3

我正在嘗試製作一個員工考勤應用程序,用戶(員工)在他們來到辦公室時可以打卡。他們插入的細節將被髮送到服務器。主要關注時間。防止用戶操縱將存儲在Android本地數據庫中的時間?

我正在嘗試實現脫機功能。 (如果應用程序未檢測到互聯網連接,則衝入的記錄將存儲在本地數據庫(SQLite)中,一旦它發生,將數據庫中的記錄(並將其清除)推送到服務器上。

我嘗試使用的GregorianCalendar類捕獲的時間,但該時間值似乎是易受用戶操縱。(尤其是方案A)

方案A

一個用戶可以打開網絡連接斷開,轉自動數據&時間 o FF,手動設置的時間,然後打開該應用在衝

例: X先生涉及到辦公室在上午08點45,輪流飛行模式,手動設置設備時間(比方說上午08點30分),然後拳擊記錄。他設置的時間值被輸入到分貝中,而不是他進來的實際時間。

如何防止發生這種情況?

方案B

用戶可以隻手動編輯本地分貝值(根植電話)。 [我知道這是必然的,但任何建議,使他更難?]

回答

1

場景A: 解決方案1:

private boolean haveInternet() 
{ 
    ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); 
    return activeNetworkInfo != null && activeNetworkInfo.isConnected(); 
} 

解決方法2:當有互聯網連接只接受值ping您的服務器timeDate。

解決方案3:報名參加timechange事件的廣播接收器,並禁用應用程序,直到你可以ping你的服務器(從這裏取:https://stackoverflow.com/a/20766107/2540578

方案B:對數據進行加密。有多種解決方案來做到這一點,但它取決於你正在使用的東西(sqlite,realm,greendao等)

+0

脫機功能是我們爲什麼要做這個應用程序的原因,所以這是必須的。那麼,加入_Solution 3_,你能想到更多嗎? – sHOLE

相關問題