key 不存在也是設定的一種存在狀態

2021-05-12 10:39:24 字數 862 閱讀 2596

在 android 程式中要訪問系統設定時可以用

其中 type 可以為 int,float,string 等,key 是 android.provider.settings.system 中定義的常量。比如下面的**可以取得系統的 wi-fi 連線是否啟用的靜態 ip 設定:

但是 system.gettype(contentresolver, key) 系列函式會丟擲 settingnotfoundexception 異常。也就是說在查詢不到此 key 對應的 value 時會丟擲異常,我們應該把上述**用 try ... catch ... 包起來。當然,system.gettype(contentresolver, key, def) 在大多數情況下或許更方便。

總體來說,這個過程並沒有什麼複雜的地方,但是如果深究一下,為什麼明確地寫在文件裡面的 key 在執行時會有取不到的可能性呢?其實這個問題我之前也考慮過,但沒有多想,想當然地認為這樣的 api 設計只是「為了看起來更嚴謹吧」(現在想想,多麼幼稚的想法,哈哈)。直到今天我才明白這些設定如果保持初始的預設值一直沒有改動過的話他們對應的 key 在系統資料庫中就不存在!比如你的手機自從出廠(或上次重灌系統)到現在壓根沒有設定過靜態 ip 選項(「use static ip" 預設是關閉的),那麼 wifi_use_static_ip 在系統設定資料庫中就不存在。也就是說 key 不存在也是設定的一種存在狀態,這句話說起來有點拗口,呵呵。

當然,這些 key 不存在還有一種可能性:某些裝置沒有實現某個功能。比如某款手機沒有 wi-fi 晶元或壓根不支援靜態 ip(只是舉個例子)也可以在查詢 wifi_use_static_ip 時丟擲 settingnotfoundexception 異常(??)。我對這個不成熟的觀點持嚴重的懷疑態度。

不存在 科學故事丨不存在的N射線

在倫琴意外發現x射線獲諾獎的兩年後,法國也有一位物理學家 布朗洛聲稱自己 意外 發現了新射線。故事還是從關於倫琴發現的x射線說起。1895年11月8日,倫琴無意間拍攝的一張x射線 上印出來倫琴夫人的骨頭與戒指,人們開始知道了x射線能夠穿透 和肌肉。但對於x射線到底是什麼?整個物理學界確是一頭霧水。當...

不存在 看不見的振動,真的不存在嗎

分享給大家一些我在好多書上看到的有趣的事 現在的你,正以每小時約十萬七千公里的速度繞太陽跑,這是地球在軌道上執行的速度。我們的太陽系正以每小時約七十七萬公里的速度繞著銀河中心執行!我們所在的銀河,正以每小時約209萬公里的速度在宇宙中移動。這表示,此時此刻,你正以每小時數百公里的速度在太空極速穿梭。...

專案啊,不存在的

最近負責乙個新的專案,第一次單獨負責乙個專案,起初挺開心激動的,等到接手整個工程後,蔫了。整個專案都是坑,但是仔細想想,什麼樣的專案才是優秀的工程呢,每個人的編碼風格都是不同的,在我以前的編碼生涯中,也修改以前同事的 不可否認,讀其他人的 是痛苦的,但是,同樣,讀他人的 就如同與他人交流一樣,如讀書...