@@ -5,6 +5,7 @@ import android.annotation.SuppressLint
5
5
import android.app.Activity
6
6
import android.content.Context
7
7
import android.content.Intent
8
+ import android.content.Intent.EXTRA_ALLOW_MULTIPLE
8
9
import android.content.SharedPreferences
9
10
import android.graphics.drawable.GradientDrawable
10
11
import android.net.Uri
@@ -869,6 +870,7 @@ class SettingActivity : ToolbarActivity(), ColorChooserDialog.ColorCallback,
869
870
.itemsCallback { _, _, select, _ ->
870
871
if (select == 0 ) {
871
872
val intent = Intent (Intent .ACTION_GET_CONTENT ).apply {
873
+ putExtra(EXTRA_ALLOW_MULTIPLE , true )
872
874
type = MimeTypeMap .getSingleton().getMimeTypeFromExtension(" m3u" )
873
875
addCategory(Intent .CATEGORY_OPENABLE )
874
876
}
@@ -1340,37 +1342,50 @@ class SettingActivity : ToolbarActivity(), ColorChooserDialog.ColorCallback,
1340
1342
}
1341
1343
REQUEST_IMPORT_PLAYLIST -> {
1342
1344
if (resultCode == Activity .RESULT_OK ) {
1343
- data?.data?.let { uri ->
1345
+ if (data?.data != null ) {
1346
+ val uri = data.data ? : return
1344
1347
DatabaseRepository
1345
- .getInstance()
1346
- .getAllPlaylist()
1347
- .compose(applySingleScheduler())
1348
- .subscribe { playlists ->
1349
- getBaseDialog(this )
1350
- .title(R .string.add_to_playlist)
1351
- .items(playlists.map { it.name })
1352
- .itemsCallback { _, _, _, text ->
1353
- disposables.add(importM3UFile(this , uri, text.toString(), false ))
1354
- }
1355
- .neutralText(R .string.create_playlist)
1356
- .onNeutral { _, _ ->
1357
- val m3uFile = DocumentFile .fromSingleUri(this , uri)
1358
- getBaseDialog(this )
1359
- .title(R .string.new_playlist)
1360
- .positiveText(R .string.create)
1361
- .negativeText(R .string.cancel)
1362
- .content(R .string.input_playlist_name)
1363
- .input(null , m3uFile?.name?.removeSuffix(" .m3u" )) { _, input ->
1364
- if (playlists.map { it.name }.contains(input.toString())) {
1365
- ToastUtil .show(this , R .string.playlist_already_exist)
1366
- } else if (! input.isNullOrBlank()){
1367
- disposables.add(importM3UFile(this , uri, input.toString(), true ))
1368
- }
1369
- }
1370
- .show()
1348
+ .getInstance()
1349
+ .getAllPlaylist()
1350
+ .compose(applySingleScheduler())
1351
+ .subscribe { playlists ->
1352
+ getBaseDialog(this )
1353
+ .title(R .string.add_to_playlist)
1354
+ .items(playlists.map { it.name })
1355
+ .itemsCallback { _, _, _, text ->
1356
+ disposables.add(importM3UFile(this , uri, text.toString(), false ))
1357
+ }
1358
+ .neutralText(R .string.create_playlist)
1359
+ .onNeutral { _, _ ->
1360
+ val m3uFile = DocumentFile .fromSingleUri(this , uri)
1361
+ getBaseDialog(this )
1362
+ .title(R .string.new_playlist)
1363
+ .positiveText(R .string.create)
1364
+ .negativeText(R .string.cancel)
1365
+ .content(R .string.input_playlist_name)
1366
+ .input(null , m3uFile?.name?.removeSuffix(" .m3u" )) { _, input ->
1367
+ if (playlists.map { it.name }.contains(input.toString())) {
1368
+ ToastUtil .show(this , R .string.playlist_already_exist)
1369
+ } else if (! input.isNullOrBlank()){
1370
+ disposables.add(importM3UFile(this , uri, input.toString(), true ))
1371
+ }
1371
1372
}
1372
1373
.show()
1373
- }
1374
+ }
1375
+ .show()
1376
+ }
1377
+ } else {
1378
+ // 多个按顺序直接导入
1379
+ data?.clipData?.let { clipData ->
1380
+ val pairs = ArrayList <Pair <Uri , DocumentFile >>()
1381
+ for (i in 0 until clipData.itemCount) {
1382
+ val uri = clipData.getItemAt(i).uri
1383
+ pairs.add(Pair (uri, DocumentFile .fromSingleUri(this , uri) ? : continue ))
1384
+ }
1385
+ pairs.forEach {
1386
+ importM3UFile(this , it.first, it.second.name ? : " unknown" , true )
1387
+ }
1388
+ }
1374
1389
}
1375
1390
}
1376
1391
}
0 commit comments