From 43ee48ac2b4a5d466ab0ba97d23b4ab62c703e97 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Fri, 21 Dec 2018 18:06:25 +0100 Subject: [PATCH] only show "SDCards can be used to swap" if an SD Card is present --- .../fdroid/views/main/NearbyViewBinder.java | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/app/src/full/java/org/fdroid/fdroid/views/main/NearbyViewBinder.java b/app/src/full/java/org/fdroid/fdroid/views/main/NearbyViewBinder.java index 0df89f884..1e8693a7d 100644 --- a/app/src/full/java/org/fdroid/fdroid/views/main/NearbyViewBinder.java +++ b/app/src/full/java/org/fdroid/fdroid/views/main/NearbyViewBinder.java @@ -85,11 +85,15 @@ class NearbyViewBinder { Environment.isExternalStorageRemovable(activity.getExternalFilesDir(""))); File[] dirs = activity.getExternalFilesDirs(""); if (dirs != null) { - for (File f : dirs) { - if (f != null && Environment.isExternalStorageRemovable(f)) { - // remove Android/data/org.fdroid.fdroid/files to get root - externalStorage = f.getParentFile().getParentFile().getParentFile().getParentFile(); - break; + for (File dir : dirs) { + if (dir != null && Environment.isExternalStorageRemovable(dir)) { + String state = Environment.getExternalStorageState(dir); + if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state) + || Environment.MEDIA_MOUNTED.equals(state)) { + // remove Android/data/org.fdroid.fdroid/files to get root + externalStorage = dir.getParentFile().getParentFile().getParentFile().getParentFile(); + break; + } } } } @@ -100,7 +104,11 @@ class NearbyViewBinder { externalStorage = Environment.getExternalStorageDirectory(); } - if (externalStorage != null) { + final String writeExternalStorage = Manifest.permission.WRITE_EXTERNAL_STORAGE; + + if (externalStorage != null + || PackageManager.PERMISSION_GRANTED + != ContextCompat.checkSelfPermission(activity, writeExternalStorage)) { nearbySplash.setVisibility(View.GONE); View readExternalStorage = swapView.findViewById(R.id.readExternalStorage); readExternalStorage.setVisibility(View.VISIBLE); @@ -116,9 +124,8 @@ class NearbyViewBinder { msg += "|" + f.getName(); } Toast.makeText(activity, msg, Toast.LENGTH_LONG).show(); - final String writeExternalStorage = Manifest.permission.WRITE_EXTERNAL_STORAGE; if (Build.VERSION.SDK_INT >= 23 - && !externalStorage.canRead() + && (externalStorage == null || !externalStorage.canRead()) && PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(activity, writeExternalStorage)) { ActivityCompat.requestPermissions(activity, new String[]{writeExternalStorage},