Merge branch 'clean-up-sdcard-swap' into 'master'
Clean up sdcard swap See merge request fdroid/fdroidclient!775
This commit is contained in:
		
						commit
						e4537a4271
					
				@ -85,14 +85,18 @@ class NearbyViewBinder {
 | 
				
			|||||||
                    Environment.isExternalStorageRemovable(activity.getExternalFilesDir("")));
 | 
					                    Environment.isExternalStorageRemovable(activity.getExternalFilesDir("")));
 | 
				
			||||||
            File[] dirs = activity.getExternalFilesDirs("");
 | 
					            File[] dirs = activity.getExternalFilesDirs("");
 | 
				
			||||||
            if (dirs != null) {
 | 
					            if (dirs != null) {
 | 
				
			||||||
                for (File f : dirs) {
 | 
					                for (File dir : dirs) {
 | 
				
			||||||
                    if (f != null && Environment.isExternalStorageRemovable(f)) {
 | 
					                    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
 | 
					                            // remove Android/data/org.fdroid.fdroid/files to get root
 | 
				
			||||||
                        externalStorage = f.getParentFile().getParentFile().getParentFile().getParentFile();
 | 
					                            externalStorage = dir.getParentFile().getParentFile().getParentFile().getParentFile();
 | 
				
			||||||
                            break;
 | 
					                            break;
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        } else if (Environment.isExternalStorageRemovable() &&
 | 
					        } else if (Environment.isExternalStorageRemovable() &&
 | 
				
			||||||
                (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED_READ_ONLY)
 | 
					                (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED_READ_ONLY)
 | 
				
			||||||
                        || Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))) {
 | 
					                        || Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))) {
 | 
				
			||||||
@ -100,7 +104,11 @@ class NearbyViewBinder {
 | 
				
			|||||||
            externalStorage = Environment.getExternalStorageDirectory();
 | 
					            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);
 | 
					            nearbySplash.setVisibility(View.GONE);
 | 
				
			||||||
            View readExternalStorage = swapView.findViewById(R.id.readExternalStorage);
 | 
					            View readExternalStorage = swapView.findViewById(R.id.readExternalStorage);
 | 
				
			||||||
            readExternalStorage.setVisibility(View.VISIBLE);
 | 
					            readExternalStorage.setVisibility(View.VISIBLE);
 | 
				
			||||||
@ -109,26 +117,20 @@ class NearbyViewBinder {
 | 
				
			|||||||
                @RequiresApi(api = 21)
 | 
					                @RequiresApi(api = 21)
 | 
				
			||||||
                @Override
 | 
					                @Override
 | 
				
			||||||
                public void onClick(View v) {
 | 
					                public void onClick(View v) {
 | 
				
			||||||
                    File storage = externalStorage.getParentFile();
 | 
					 | 
				
			||||||
                    File[] files = storage.listFiles();
 | 
					 | 
				
			||||||
                    String msg = "";
 | 
					 | 
				
			||||||
                    if (files != null) for (File f : files) {
 | 
					 | 
				
			||||||
                        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
 | 
					                    if (Build.VERSION.SDK_INT >= 23
 | 
				
			||||||
                            && !externalStorage.canRead()
 | 
					                            && (externalStorage == null || !externalStorage.canRead())
 | 
				
			||||||
                            && PackageManager.PERMISSION_GRANTED
 | 
					                            && PackageManager.PERMISSION_GRANTED
 | 
				
			||||||
                            != ContextCompat.checkSelfPermission(activity, writeExternalStorage)) {
 | 
					                            != ContextCompat.checkSelfPermission(activity, writeExternalStorage)) {
 | 
				
			||||||
                        ActivityCompat.requestPermissions(activity, new String[]{writeExternalStorage},
 | 
					                        ActivityCompat.requestPermissions(activity, new String[]{writeExternalStorage},
 | 
				
			||||||
                                MainActivity.REQUEST_STORAGE_PERMISSIONS);
 | 
					                                MainActivity.REQUEST_STORAGE_PERMISSIONS);
 | 
				
			||||||
                    } else {
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        Toast.makeText(activity,
 | 
				
			||||||
 | 
					                                activity.getString(R.string.scan_removable_storage_toast, externalStorage),
 | 
				
			||||||
 | 
					                                Toast.LENGTH_SHORT).show();
 | 
				
			||||||
                        SDCardScannerService.scan(activity);
 | 
					                        SDCardScannerService.scan(activity);
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            });
 | 
					            });
 | 
				
			||||||
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -26,7 +26,6 @@ import android.net.Uri;
 | 
				
			|||||||
import android.support.annotation.Nullable;
 | 
					import android.support.annotation.Nullable;
 | 
				
			||||||
import android.text.TextUtils;
 | 
					import android.text.TextUtils;
 | 
				
			||||||
import android.util.Log;
 | 
					import android.util.Log;
 | 
				
			||||||
 | 
					 | 
				
			||||||
import org.fdroid.fdroid.Utils;
 | 
					import org.fdroid.fdroid.Utils;
 | 
				
			||||||
import org.fdroid.fdroid.data.Apk;
 | 
					import org.fdroid.fdroid.data.Apk;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -91,9 +90,11 @@ class ApkVerifier {
 | 
				
			|||||||
        Utils.debugLog(TAG, "expectedTargetSdkVersion: " + expectedTargetSdkVersion);
 | 
					        Utils.debugLog(TAG, "expectedTargetSdkVersion: " + expectedTargetSdkVersion);
 | 
				
			||||||
        if (expectedTargetSdkVersion == Apk.SDK_VERSION_MIN_VALUE) {
 | 
					        if (expectedTargetSdkVersion == Apk.SDK_VERSION_MIN_VALUE) {
 | 
				
			||||||
            // NOTE: In old fdroidserver versions, targetSdkVersion was not stored inside the repo!
 | 
					            // NOTE: In old fdroidserver versions, targetSdkVersion was not stored inside the repo!
 | 
				
			||||||
            Log.w(TAG, "Skipping check for targetSdkVersion, not available in this repo!");
 | 
					            Log.w(TAG, "Skipping check for targetSdkVersion, not available in this app or repo!");
 | 
				
			||||||
        } else if (localTargetSdkVersion != expectedTargetSdkVersion) {
 | 
					        } else if (localTargetSdkVersion != expectedTargetSdkVersion) {
 | 
				
			||||||
            throw new ApkVerificationException("TargetSdkVersion of apk file is not the expected targetSdkVersion!");
 | 
					            throw new ApkVerificationException(
 | 
				
			||||||
 | 
					                    String.format("TargetSdkVersion of apk file (%d) is not the expected targetSdkVersion (%d)!",
 | 
				
			||||||
 | 
					                            localTargetSdkVersion, expectedTargetSdkVersion));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -56,6 +56,7 @@ import org.fdroid.fdroid.R;
 | 
				
			|||||||
import org.fdroid.fdroid.UpdateService;
 | 
					import org.fdroid.fdroid.UpdateService;
 | 
				
			||||||
import org.fdroid.fdroid.Utils;
 | 
					import org.fdroid.fdroid.Utils;
 | 
				
			||||||
import org.fdroid.fdroid.data.NewRepoConfig;
 | 
					import org.fdroid.fdroid.data.NewRepoConfig;
 | 
				
			||||||
 | 
					import org.fdroid.fdroid.localrepo.SDCardScannerService;
 | 
				
			||||||
import org.fdroid.fdroid.views.AppDetailsActivity;
 | 
					import org.fdroid.fdroid.views.AppDetailsActivity;
 | 
				
			||||||
import org.fdroid.fdroid.views.ManageReposActivity;
 | 
					import org.fdroid.fdroid.views.ManageReposActivity;
 | 
				
			||||||
import org.fdroid.fdroid.views.apps.AppListActivity;
 | 
					import org.fdroid.fdroid.views.apps.AppListActivity;
 | 
				
			||||||
@ -248,6 +249,11 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationB
 | 
				
			|||||||
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
 | 
					        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
 | 
				
			||||||
        if (requestCode == REQUEST_LOCATION_PERMISSIONS) {
 | 
					        if (requestCode == REQUEST_LOCATION_PERMISSIONS) {
 | 
				
			||||||
            startActivity(new Intent(this, SwapWorkflowActivity.class));
 | 
					            startActivity(new Intent(this, SwapWorkflowActivity.class));
 | 
				
			||||||
 | 
					        } else if (requestCode == REQUEST_STORAGE_PERMISSIONS) {
 | 
				
			||||||
 | 
					            Toast.makeText(this,
 | 
				
			||||||
 | 
					                    this.getString(R.string.scan_removable_storage_toast, ""),
 | 
				
			||||||
 | 
					                    Toast.LENGTH_SHORT).show();
 | 
				
			||||||
 | 
					            SDCardScannerService.scan(this);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -60,6 +60,7 @@
 | 
				
			|||||||
    <string name="local_repo_name_summary">The advertised title of your local repo: %s</string>
 | 
					    <string name="local_repo_name_summary">The advertised title of your local repo: %s</string>
 | 
				
			||||||
    <string name="local_repo_https_on">Use encrypted HTTPS:// connection for local repo</string>
 | 
					    <string name="local_repo_https_on">Use encrypted HTTPS:// connection for local repo</string>
 | 
				
			||||||
    <string name="scan_removable_storage_title">Scan removable storage</string>
 | 
					    <string name="scan_removable_storage_title">Scan removable storage</string>
 | 
				
			||||||
 | 
					    <string name="scan_removable_storage_toast">Scanning %s…</string>
 | 
				
			||||||
    <string name="scan_removable_storage_summary">Look for package repos on removable storage like SD Cards
 | 
					    <string name="scan_removable_storage_summary">Look for package repos on removable storage like SD Cards
 | 
				
			||||||
        and USB thumb drives
 | 
					        and USB thumb drives
 | 
				
			||||||
    </string>
 | 
					    </string>
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user