發表文章

目前顯示的是 八月, 2013的文章

使用<uses-feature>的注意事項

<uses-feature>最早是在Android 1.6 SDK (API Level 4)中出現的,他的用途是用來宣告App會使用到哪些軟硬體功能(比如Camera、Bluetooth、OpenGL ES version...)。不過事實上系統本身並不會去檢查這些設定,但Google Play確會用這些設定去過濾要呈現哪些App給使用者。

比如說我宣告了下面這行,表示我會使用到Camera功能。這樣Google Play就不會將我的App顯示在沒有Camera的裝置上。
<uses-feature android:name="android.hardware.camera" /> 不過後來在Android 2.0 SDK (API Level 5)中,<uses-feature>多了一個屬性叫android:required。當某功能在App中是必要時需設定為true,若是非必要時則設成false。咦?...若是不需要的話,我直接省略<uses-feature>不是更省事嗎?

在看完落落長的開發者文件後才瞭解,嚴格來說,每個App都應該要清楚宣告哪些功能是必要或非必要。但因為種種原因,開發者可能忽略或未正確宣告。所以Google Play除了檢查<uses-feature>外,還會參考<uses-permission>的設定。當有設定<uses-permission>時,Google Play會假定相關的功能是必要的,並加入過濾。

舉例來說,我的App會使用到Camera,但不是必要的。為此我宣告了Camera的<uses-permission>,卻忽略了<uses-feature>。
<uses-permission android:name="android.permission.CAMERA" /> 此時Google Play發現了這個<uses-permission>,便會將Camera視為必要而進行過濾,沒有Camera的裝置就看不到我的App了,這樣跟我想要的結果不同。

該怎麼改善呢? 只要加上Camera的<uses-feature>,並把android:re…