安卓應用修改系統時間

南無大乘妙法蓮華經發表於2016-09-26

部落格: 安卓之家 微博: 追風917 CSDN: 蔣朋的家 簡書: 追風917

每日一景

前言


通常,我們來獲取系統時間來做一些事情,那麼,如何設定系統時間呢?

問題丟擲來,解決方法也就應運而生了。

解決方法


命令列

首先我想到的是手機root,然後命令列

date -s 要設定的時間複製程式碼

關於如何呼叫命令列,請點選:安卓程式中呼叫 linux 命令

如果手機沒 root 怎麼破呢,繼續往下看吧。

獲取系統許可權修改

沒有 root 的話,可以獲取系統許可權來設定,怎麼設定呢,這個文章已經給出:

如何使Android應用程式獲取系統許可權來修改系統時間

就是系統簽名了。

這裡說明一點,由於在manifest檔案加入android:sharedUserId="android.uid.system"這個屬性,導致 Android Studio 等工具,直接編譯執行會出現此提示窗:

error

多次點選 ok 無效,因為設定了系統屬性,所以,下次你執行別的專案,出現此情況時,可以檢查下時候新增了該屬性的,有的話,去掉,再編譯執行就可以的。

獲取了許可權了,一行程式碼就可以設定時間:

SystemClock.setCurrentTimeMillis(millTime);複製程式碼

引數是1970後跑過的毫秒數。

那麼問題來了,如何獲取這個時間呢,下面有三種方法:

1.gps時間

可以通過 gps 定位,獲取 gps 時間,此處原生安卓程式碼,百度,高德都可實現,具體請參考相應 api。

2.網路

找到一篇文章,是這麼個姿勢:

獲取網路時間(國家標準時間)

很巧妙,有木有啊,讀取網站時間,哈哈,有個問題,網站不穩定時,會出錯的。

3.TrueTime

地址:github.com/instacart/t…

這個是今天在 GitHub 上發現的庫,可以設定 NTP 伺服器,來獲取時間,使用也很簡單

//設定中科大ftp伺服器
TrueTime.build().withNtpHost("time.ustc.edu.cn").initialize();
Date date = TrueTime.now();複製程式碼

然後 date.getTime() 獲取毫秒數,設定時間就可以了。

最後,非常感謝您的閱讀,有任何疑問,可以後面評論,謝謝!

神奇的安卓開發網站:androidcat.com/

安卓開源庫收集整理:github.com/XXApple/And…

分享是一種美德,更是一種生活方式!!

也許你會說我是一個夢想者,但我不是唯一的一個。

悅分享,越快樂^_^

歡迎交流,轉載請註明出處,謝謝!

相關文章