2016-12-18 62 views
1

我有我的應用程序有targetSDKVersion = 21和compileSDKVersion = 21。現在對於某些功能,我通過在Manifest中聲明它來使用位置權限。關於Android M中的運行時權限模型

當我在Android M(6.0)和上述裝置中,我的應用程序運行良好和我的應用程序由系統自動由於由於Android目標SDK版本由系統應用兼容性功能提供許可運行相同的應用程序21。

但是在Android M(+)設備中,由於用戶可以從設置中禁用應用程序的位置權限,因此引入了用戶新的權限模型。

現在它發生這種情況..我的應用程序自動啓動這很好。我無法檢查位置權限是否授予我的應用程序。無論如何,我可以在編譯SDK版本21中檢查應用程序的權限。

如果我們應用程序的目標SDK爲22或更低:如果我們在清單中列出危險權限,用戶在安裝應用程序時必須授予權限;如果他們沒有授予權限,系統根本不會安裝該應用程序。

但是如果用戶已經安裝了應用程序並且撤銷了對我們的應用程序至關重要的權限。那麼我應該假設我們的開發人員是由應用程序用戶擺佈的嗎?

感謝

回答

1

運行時permisions從API 23日開始,在這個環節上,你可以看到如何要求它,以及如何就看你被授予訪問權限。

https://developer.android.com/training/permissions/requesting.html

此前版本23你問在menifest的permisions。 你也可以先用檢查機器人級別:

Integer.valueOf(android.os.Build.VERSION.SDK); 

,如果你不想改變你的目標SDK(我想你應該) 你可以使用:

ContextCompat.checkSelfPermission() 
ActivityCompat.requestPermissions(), 
ActivityCompat.shouldShowPermissionRequestRationale() 

代替Android開發者選項 希望它有幫助。

+1

謝謝您的回答哥們......我們的目標是SDK版本21.讓我看看是怎麼回事。 – Relsell

1

在android M +中,您可以檢查權限是否被授予,並通過啓用/禁用應用中的特定功能來對其進行操作。

Android權限一般分爲普通和危險權限。

普通權限:自動授予,無需用戶批准。 (只需像往常一樣添加到xml)。

這是危險權限,需要用戶的批准,你必須檢查他們是否被授予,在任何時候你使用它,以確保用戶沒有關閉它。

此鏈接可以解釋這一切與代碼片段包括: https://developer.android.com/training/permissions/requesting.html

+0

謝謝..我已經訪問了已發佈的鏈接。我的問題有點不同。我的應用程序目前是針對SDK 21.所以我試圖找出解決方案。 – Relsell

+0

這不是什麼不同的人。這是我們大多數android開發人員通過的默認情況。您將添加由版本SDK調整的更新 Integer.valueOf(android.os.Build.VERSION.SDK); 如果它是21或+ 您將確保授予權限,或者您將使用這些權限禁用某些功能,並且每次用戶嘗試使用它時,都會彈出一個對話框,要求他允許該權限 – zMabrook