ACTION_OPEN_DOCUMENT_TREE возвращает по-разному закодированные соединенные части Uri

Я хочу установить доступный для записи каталог в своем приложении для Android. Когда пользователь выбирает предпочтительный каталог, возвращаемые данные делятся на две части: левая-одна отображается правильно (со столбцом, косой чертой и пробелами), а другая кодируется с помощью%3A, %2F... После этого все идет неправильно, поскольку система предоставляет разрешения для этого плохого Uri. Почему так? Это нормально?

В упражнении А:

btnSetPath.setOnClickListener(new OnClickListener() {
                public void onClick(View v) {
                    Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
                    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
                    intent.addFlags(FLAG_DIR_SUPPORTS_CREATE);
                    intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
                    startActivityForResult(intent, 41);
                }

в on ActivityResult:

if (requestCode == 41 && resultCode == Activity.RESULT_OK&& Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP
                 ) {

             if (data != null) {
                 Uri retourUri =data.getData();
                 Log.i(TAG, "Retour direct Uri: " + retourUri.toString());

                 int takeFlags = data.getFlags() & (Intent.FLAG_GRANT_READ_URI_PERMISSION
                         | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
                 getContentResolver().takePersistableUriPermission(retourUri, takeFlags);
             }
         }

Почему мой вывод трассировки:

Возврат прямого Uri: content://com.android.externalstorage.documents/tree/primary%3Adocuments%2FTest%20%2FMovies%2FAsyncam

0 ответов

Другие вопросы по тегам