2016-03-31 25 views
0

我的android項目targetsdkvesion是15,minsdkversion是9,compilesdkversion是23,我在androidmanifest.xml中列出了android.permission.READ_PHONE_STATE。 我在設置中撤銷權限。然後我調試我的項目,我發現權限已被授予該項目,但在系統設置中,權限被撤銷。 (溫馨提示:該設備是承上啓下的5倍,在Android 6.0)我已經撤消了android權限,但是仍然允許返回

我的代碼:

if(Build.VERSION.SDK_INT >= 23){ if(checkSelfPermission(Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED){ requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, PERMISSIONS_REQUEST_PHONE_STATE); }else{ deviceRequest.registerDevice(); } }else{ deviceRequest.registerDevice(); }

代碼:checkSelfPermission(Manifest.permission.READ_PHONE_STATE)= PackageManager.PERMISSION_GRANTED返回false。

我不知道爲什麼,有人可以幫忙嗎?

我想知道如果targetsdkversion小於22,設置中的操作撤銷權限實際上可以工作嗎?我客人ui顯示撤銷succ但許可仍然授予。

回答

0

您的目標爲15,因此當您撤銷權限時,權限仍會存在。如果您的目標是23,並且您撤銷了權限,那麼顯然您需要再次獲得用戶的權限。如果您打算將運行時權限集成到您的應用程序中,則必須以此爲目標。

檢查此checkSelfPermission returning PERMISSION_GRANTED for revoked permission with targetSdkVersion <= 22

+0

我的問題是從他的不同。雖然權限已被撤銷,並且授予了自主權限返回權限,但我仍可以毫無例外地閱讀電話狀態。 –

+0

你說我必須將targetsdkversion設置爲23,這是否意味着當targetsdkversion小於23時不需要檢查自己的許可。因此舊代碼不需要檢查並且可以在棉花糖設備中運行? –

+0

如果你的目標是少於23你不需要要求運行時權限,因爲在你的代碼** if(Build.VERSION.SDK_INT> = 23){} **控制不會進入這個**如果* *聲明。但是你的代碼編譯是因爲你的compileSdkVersion爲23。 – Thahaseen

相關問題