Merge pull request #386 from zod/379-migration-fixes

Restore access to legacy storage when targeting older SDK
This commit is contained in:
afischerdev 2022-01-11 16:54:36 +01:00 committed by GitHub
commit cb684efc31
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 55 additions and 3 deletions

View file

@ -17,6 +17,8 @@ android {
setProperty("archivesBaseName","BRouterApp." + defaultConfig.versionName)
minSdkVersion 14
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
sourceSets.main.assets.srcDirs += new File(project.buildDir, 'assets')
@ -99,6 +101,10 @@ dependencies {
implementation project(':brouter-expressions')
implementation project(':brouter-util')
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
task generateProfiles(type: Exec) {

View file

@ -0,0 +1,47 @@
package btools.routingapp;
import static org.hamcrest.Matchers.empty;
import static org.hamcrest.Matchers.hasItem;
import static org.hamcrest.Matchers.not;
import static org.junit.Assert.assertThat;
import android.os.Build;
import android.os.Environment;
import androidx.test.core.app.ActivityScenario;
import androidx.test.ext.junit.rules.ActivityScenarioRule;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.io.File;
import java.util.List;
@RunWith(AndroidJUnit4.class)
public class BRouterActivityTest {
@Rule
public ActivityScenarioRule<BRouterActivity> rule = new ActivityScenarioRule<>(BRouterActivity.class);
@Test
public void storageDirectories() {
ActivityScenario<BRouterActivity> scenario = rule.getScenario();
scenario.onActivity(activity -> {
List<File> storageDirectories = activity.getStorageDirectories();
// Before Android Q (10) legacy storage access is possible
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
assertThat(storageDirectories, hasItem(Environment.getExternalStorageDirectory()));
}
// When targeting older SDK we can access legacy storage on any android version
if (activity.getApplicationInfo().targetSdkVersion < Build.VERSION_CODES.Q) {
assertThat(storageDirectories, hasItem(Environment.getExternalStorageDirectory()));
}
assertThat(storageDirectories, not(empty()));
});
}
}

View file

@ -596,8 +596,7 @@ public class BRouterActivity extends Activity implements ActivityCompat.OnReques
}
}
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R
&& checkExternalStorageWritable()) {
if (checkExternalStorageWritable()) {
res.add(Environment.getExternalStorageDirectory());
}

View file

@ -127,7 +127,7 @@ public class BRouterView extends View {
// don't ask twice
String version = "v" + getContext().getString(R.string.app_version);
File vFile = new File(brd, "profiles2/"+version );
if (android.os.Build.VERSION.SDK_INT == android.os.Build.VERSION_CODES.Q
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.Q
&& vFile.exists()) {
startSetup(baseDir, false);
return;