diff --git a/app/build.gradle b/app/build.gradle index 38bae3c1..e59bb07f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -43,7 +43,7 @@ dependencies { compile 'com.crystal:crystalrangeseekbar:1.1.3' compile 'commons-io:commons-io:2.5' compile group: 'com.google.guava', name: 'guava', version: '20.0' - compile 'com.github.codekidX:storage-chooser:2.0.3' + compile 'com.nononsenseapps:filepicker:4.2.1' implementation group: 'org.javatuples', name: 'javatuples', version: '1.2' implementation 'com.fasterxml.jackson.core:jackson-databind:2.8.11.1' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index f573001f..b79f1f68 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -25,8 +25,17 @@ + + + + + + @@ -34,6 +43,15 @@ android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_provider_paths"/> + + + BASIC_SETTINGS_IDS = Collections.unmodifiableList(Arrays.asList( R.id.basicSettingsText, R.id.basicSettingsTopDivider, @@ -483,30 +488,37 @@ public void onClick(DialogInterface dialog, int which) } /** - * Opening gallery for uploading video + * Opening gallery for selecting video file */ private void selectVideo() { - final StorageChooser fileChooser = new StorageChooser.Builder() - .withActivity(MainActivity.this) - .withFragmentManager(getFragmentManager()) - .allowCustomPath(true) - .setType(StorageChooser.FILE_PICKER) - .disableMultiSelect() - .build(); + Intent i = new Intent(this, FilePickerActivity.class); + + i.putExtra(FilePickerActivity.EXTRA_ALLOW_MULTIPLE, false); + i.putExtra(FilePickerActivity.EXTRA_ALLOW_CREATE_DIR, false); + i.putExtra(FilePickerActivity.EXTRA_MODE, FilePickerActivity.MODE_FILE); + + i.putExtra(FilePickerActivity.EXTRA_START_PATH, Environment.getExternalStorageDirectory().getPath()); - // get path that the user has chosen - fileChooser.setOnSelectListener(new StorageChooser.OnSelectListener() + startActivityForResult(i, SELECT_FILE_REQUEST); + } + + protected void onActivityResult(int requestCode, int resultCode, Intent intent) + { + if (requestCode == SELECT_FILE_REQUEST && resultCode == Activity.RESULT_OK) { - @Override - public void onSelect(String filePath) + // Use the provided utility method to parse the result + List files = Utils.getSelectedFilesFromResult(intent); + + // There should be at most once result + if(files.size() > 0) { - Log.i(TAG, "Selected file: " + filePath); - setSelectMediaFile(filePath); - } - }); + File file = Utils.getFileForUri(files.get(0)); - fileChooser.show(); + Log.i(TAG, "Selected file: " + file.getAbsolutePath()); + setSelectMediaFile(file.getAbsolutePath()); + } + } } private List getFfmpegEncodingArgs(String inputFilePath, Integer startTimeSec, Integer endTimeSec, @@ -1394,7 +1406,7 @@ private void displayAboutDialog() .put("FFmpeg Android", "https://github.com/bravobit/FFmpeg-Android") .put("Guava", "https://github.com/google/guava") .put("Crystal Range Seekbar", "https://github.com/syedowaisali/crystal-range-seekbar") - .put("Storage Chooser", "https://github.com/codekidX/storage-chooser") + .put("NoNonsense-FilePicker", "https://github.com/spacecowboy/NoNonsense-FilePicker") .put("javatuples", "https://www.javatuples.org/") .put("jackson-databind", "https://github.com/FasterXML/jackson-databind") .build(); diff --git a/app/src/main/java/protect/videotranscoder/provider/ExportFileProvider.java b/app/src/main/java/protect/videotranscoder/provider/ExportFileProvider.java new file mode 100644 index 00000000..f3fc206a --- /dev/null +++ b/app/src/main/java/protect/videotranscoder/provider/ExportFileProvider.java @@ -0,0 +1,11 @@ +package protect.videotranscoder.provider; + +import android.support.v4.content.FileProvider; + +/** + * This file picker exists only to avoid a name conflict with + * a used package that uses the FileProvider directly. + */ +public class ExportFileProvider extends FileProvider +{ +} diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 3f11058a..ca6c9691 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -7,4 +7,27 @@ @color/colorPrimaryDark @color/colorAccent + + + + + diff --git a/app/src/test/shell/test.py b/app/src/test/shell/test.py index 98046ef7..37224cca 100644 --- a/app/src/test/shell/test.py +++ b/app/src/test/shell/test.py @@ -185,7 +185,7 @@ def ffprobe(filename): stdout, stderr = p.communicate() rc = p.wait() if rc != 0: - raise Exception("ffprobe failed with " + str(rc) + " on " + filename + ":\n" + stderr) + raise Exception("ffprobe failed with " + str(rc) + " on " + filename + ":\n" + stdout + "\n" + stderr) data = json.loads(stdout) return data