2016-02-02 33 views
2

我在Android官方博客readed這樣的:可以使用Api 23(6.0)編譯並維護舊的權限系統(安裝時間)?

權限更改棉花糖,權限已經從 安裝時移動到運行時。這是對SDK 23+, 的強制更改,這意味着它將影響所有開發人員和所有針對Android的Android應用程序 。

因此......如果您使用Android 6.0(api 23)進行編譯,但是您的目標是Android 4.4(api 20),則可以維護舊的權限系統?

我的意思是這樣:

compileSdkVersion 'Google Inc.:Google APIs:23' 
    buildToolsVersion "23.0.1" 

    defaultConfig { 
     minSdkVersion 10 
     targetSdkVersion 20 
    } 

在我的項目,現在先決條件是維持舊的許可制度和目標SDK版本20(因爲我需要保持最老的通知系統,如果你的目標sdk版本高於20你必須使用新的通知系統)。所以......我可以編譯與Api 23和維護舊的權限系統,如果我的目標是sdk版本20?

由於

+2

targetSdkVersion應該決定是否使用新的權限模型。這似乎很容易測試,但;只需在運行Android 6.0或更高版本的設備(或模擬器)上運行應用程序即可。 – Michael

回答

7

是舊的許可系統將用於(甚至在Android 6.0)如果targetSdkVersion設置< 23。然而在Android 6.0用戶可以稍後手動地從設置禁用單個權限。雖然Android 6.0會在用戶嘗試這樣做時發出警告,但無論如何他們都可以撤銷。

現在的問題是用戶撤銷權限後,您的應用程序會崩潰嗎?

當我們調用需要撤銷對 應用比23 targetSdkVersion少權限用戶的功能,不會有Exception 被拋出。相反,它只是無所作爲。對於返回值的函數 ,它將返回null或0,具體取決於 的情況。儘管應用程序不會因調用 函數而崩潰。它可能仍然會從應用程序的下一個 與那些返回的值中崩潰。

+2

這是我們項目的一個非常重要的信息,我們正在運行我們的應用程序而不是手機,但是在運行Android 6的基於Qualcomm Snapdragon芯片組的主板上運行。由於沒有顯示器,我們無法設置權限一個無頭的設置。我只是將targetSDK更改爲22,現在應用程序不會要求權限。非常感謝您的回答。電路板製造商應該從他們的Android圖像中完全禁用權限模塊,我相信他們最終必須這樣做,否則這些沒有顯示器的電路板將來不太實用。 – zeeshan