READ_EXTERNAL_STORAGE for android Q

This commit is contained in:
lionel 2022-03-25 16:09:19 +01:00
parent 96540f4a50
commit 6a1ed20e07
2 changed files with 46 additions and 5 deletions

View File

@ -227,7 +227,7 @@ public class MainActivity extends AppCompatActivity {
public static final int REQUEST_ID_READ_EXTERNAL_STORAGE = 2001; public static final int REQUEST_ID_READ_EXTERNAL_STORAGE = 2001;
private boolean checkAndRequestPermissions() { private boolean checkAndRequestPermissions() {
if (ContextCompat.checkSelfPermission( if (ContextCompat.checkSelfPermission(
this, Manifest.permission.READ_EXTERNAL_STORAGE) == this, Manifest.permission.READ_EXTERNAL_STORAGE) ==

View File

@ -1,8 +1,10 @@
package com.localtransfer; package com.localtransfer;
import android.Manifest;
import android.app.Activity; import android.app.Activity;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
import android.util.Log; import android.util.Log;
@ -10,6 +12,8 @@ import android.view.MenuItem;
import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat; import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager; import androidx.preference.PreferenceManager;
@ -49,14 +53,22 @@ public class SettingsActivity extends AppCompatActivity {
SwitchPreference shared; SwitchPreference shared;
shared = findPreference("use_shared_storage"); shared = findPreference("use_shared_storage");
if(shared.isChecked()) if(shared.isChecked()) {
directory.setVisible(true); if(checkAndRequestPermissions())
directory.setVisible(true);
else
shared.setChecked(false);
}
else else
directory.setVisible(false); directory.setVisible(false);
shared.setOnPreferenceClickListener(preference -> { shared.setOnPreferenceClickListener(preference -> {
if(shared.isChecked()) if(shared.isChecked()) {
directory.setVisible(true); if(checkAndRequestPermissions())
directory.setVisible(true);
else
shared.setChecked(false);
}
else else
directory.setVisible(false); directory.setVisible(false);
return false; return false;
@ -71,6 +83,35 @@ public class SettingsActivity extends AppCompatActivity {
}); });
} }
private boolean checkAndRequestPermissions() {
if (ContextCompat.checkSelfPermission(
getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE) ==
PackageManager.PERMISSION_GRANTED) {
Log.d("READ_EXTERNAL_STORAGE", "already granted");
return true;
}
else {
ActivityCompat.requestPermissions(getActivity(), new String[] {android.Manifest.permission.READ_EXTERNAL_STORAGE}, MainActivity.REQUEST_ID_READ_EXTERNAL_STORAGE);
}
return false;
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[],
int[] grantResults) {
switch (requestCode) {
case MainActivity.REQUEST_ID_READ_EXTERNAL_STORAGE:
if (grantResults.length > 0 &&
grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.d("READ_EXTERNAL_STORAGE", "granted");
} else {
Log.d("READ_EXTERNAL_STORAGE", "No granted");
}
return;
}
}
@Override @Override
public void onActivityResult(int requestCode, int resultCode, Intent data) { public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);