Skip to content

Commit 32dffb5

Browse files
committed
Provide mime type to file picker to gray out unselectable files
1 parent cd713db commit 32dffb5

4 files changed

Lines changed: 19 additions & 10 deletions

File tree

app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionFragment.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -179,23 +179,23 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
179179
}
180180

181181
private fun onImportPreviousSelected() {
182-
requestImportLauncher.launch(StoredFileHelper.getPicker(activity))
182+
requestImportLauncher.launch(StoredFileHelper.getPicker(activity, JSON_MIME_TYPE))
183183
}
184184

185185
private fun onExportSelected() {
186186
val date = SimpleDateFormat("yyyyMMddHHmm", Locale.ENGLISH).format(Date())
187187
val exportName = "newpipe_subscriptions_$date.json"
188188

189189
requestExportLauncher.launch(
190-
StoredFileHelper.getNewPicker(activity, exportName, "application/json", null)
190+
StoredFileHelper.getNewPicker(activity, exportName, JSON_MIME_TYPE, null)
191191
)
192192
}
193193

194194
private fun openReorderDialog() {
195195
FeedGroupReorderDialog().show(parentFragmentManager, null)
196196
}
197197

198-
fun requestExportResult(result: ActivityResult) {
198+
private fun requestExportResult(result: ActivityResult) {
199199
if (result.data != null && result.resultCode == Activity.RESULT_OK) {
200200
activity.startService(
201201
Intent(activity, SubscriptionsExportService::class.java)
@@ -204,7 +204,7 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
204204
}
205205
}
206206

207-
fun requestImportResult(result: ActivityResult) {
207+
private fun requestImportResult(result: ActivityResult) {
208208
if (result.data != null && result.resultCode == Activity.RESULT_OK) {
209209
ImportConfirmationDialog.show(
210210
this,
@@ -407,4 +407,8 @@ class SubscriptionFragment : BaseStateFragment<SubscriptionState>() {
407407
super.hideLoading()
408408
binding.itemsList.animate(true, 200)
409409
}
410+
411+
companion object {
412+
const val JSON_MIME_TYPE = "application/json"
413+
}
410414
}

app/src/main/java/org/schabi/newpipe/local/subscription/SubscriptionsImportFragment.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,8 @@ public void onImportUrl(final String value) {
177177
}
178178

179179
public void onImportFile() {
180-
requestImportFileLauncher.launch(StoredFileHelper.getPicker(activity));
180+
// leave */* mime type to support all services with different mime types and file extensions
181+
requestImportFileLauncher.launch(StoredFileHelper.getPicker(activity, "*/*"));
181182
}
182183

183184
private void requestImportFileResult(final ActivityResult result) {

app/src/main/java/org/schabi/newpipe/settings/ContentSettingsFragment.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,8 @@ public void onCreatePreferences(final Bundle savedInstanceState, final String ro
7777
final Preference importDataPreference = requirePreference(R.string.import_data);
7878
importDataPreference.setOnPreferenceClickListener((Preference p) -> {
7979
requestImportPathLauncher.launch(
80-
StoredFileHelper.getPicker(requireContext(), getImportExportDataUri()));
80+
StoredFileHelper.getPicker(requireContext(),
81+
ZIP_MIME_TYPE, getImportExportDataUri()));
8182
return true;
8283
});
8384

app/src/main/java/org/schabi/newpipe/streams/io/StoredFileHelper.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -459,11 +459,12 @@ private boolean stringMismatch(final String str1, final String str2) {
459459
return !str1.equals(str2);
460460
}
461461

462-
public static Intent getPicker(@NonNull final Context ctx) {
462+
public static Intent getPicker(@NonNull final Context ctx,
463+
@NonNull final String mimeType) {
463464
if (NewPipeSettings.useStorageAccessFramework(ctx)) {
464465
return new Intent(Intent.ACTION_OPEN_DOCUMENT)
465466
.putExtra("android.content.extra.SHOW_ADVANCED", true)
466-
.setType("*/*")
467+
.setType(mimeType)
467468
.addCategory(Intent.CATEGORY_OPENABLE)
468469
.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION
469470
| StoredDirectoryHelper.PERMISSION_FLAGS);
@@ -477,8 +478,10 @@ public static Intent getPicker(@NonNull final Context ctx) {
477478
}
478479
}
479480

480-
public static Intent getPicker(@NonNull final Context ctx, @Nullable final Uri initialPath) {
481-
return applyInitialPathToPickerIntent(ctx, getPicker(ctx), initialPath, null);
481+
public static Intent getPicker(@NonNull final Context ctx,
482+
@NonNull final String mimeType,
483+
@Nullable final Uri initialPath) {
484+
return applyInitialPathToPickerIntent(ctx, getPicker(ctx, mimeType), initialPath, null);
482485
}
483486

484487
public static Intent getNewPicker(@NonNull final Context ctx,

0 commit comments

Comments
 (0)