Admin
Admin

Reputation: 193

android ContextCompat.checkSelfPermission always returns PERMISSION_GRANTED

In my android application (minSdkVersion 15), i have to create directory and write files into it. In my AppManifest i am using :

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Before creating directory or file, i am checking if permission is allowed or deny, as

   boolean isAllow = ContextCompat.checkSelfPermission(this, android.Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED;

But it is always returning true or PERMISSION_GRANTED, even when someone set deny permission from Settings -> Apps -> Permissions

Deny Permission

Why checkSelfPermission is always returning PERMISSION_GRANTED ? Is there any way to check if permission is denied ?

To invoke permission i have used :

  ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);

But its not showing permission Dialogue??

Upvotes: 3

Views: 2993

Answers (3)

maulik panchal
maulik panchal

Reputation: 116

if your targetSdkVersion is minimum 23 then your problem can be solved by code as below:

int permissionCheck = PermissionChecker.checkSelfPermission(getReactApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE);

Upvotes: 0

kaolick
kaolick

Reputation: 4857

For those who develop with Xamarin make sure that you explicitly set the targetSDK version >= 23 in your manifest.

Don't use automatic for your targetSDK!!!

Upvotes: 0

AskNilesh
AskNilesh

Reputation: 69689

In the new permission model permissions with protection level dangerous are runtime permissions. For apps targeting M and above the user may not grant such permissions or revoke them at any time. For apps targeting API lower than Marshmallow(<23) these permissions are always granted as such apps do not expect permission revocations and would crash. Therefore, when the user disables a permission for a legacy app in the UI the platform disables the APIs guarded by this permission making them a no-op which is doing nothing or returning an empty result or default error.

for more information visit PermissionChecker

Upvotes: 4

Related Questions