Невозможно получить доступ к USB-ключу OTG сразу после предоставления ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSIONJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Невозможно получить доступ к USB-ключу OTG сразу после предоставления ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION

Сообщение Anonymous »

Мой телефон — Samsung A32 5G (SM-A326B/DS).
Android 12, родное ПЗУ, SDK 31.
Мне нужно читать файлы с OTG USB ключ из 2 приложений:

[*]Мое приложение, которое является установщиком. Он устанавливает APK и восстанавливает некоторые данные на внешней SD-карте или USB-устройстве OTG.
[*]Приложение Termux, загруженное с github и измененное для запроса прав.

Манифест включает в себя: Чтобы запросить код Java, я попробовал 2 метода:
Первый метод:

Код: Выделить всё

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
if (!Environment.isExternalStorageManager()) {
CTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION");
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
String name = getPackageName();
Uri uri = Uri.fromParts("package", name, null);
intent.setData(uri);
startActivity(intent);
}
}
Второй метод:

Код: Выделить всё

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
if (!getPackageManager().canRequestPackageInstalls()) {
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION, Uri.parse("package:" + BuildConfig.APPLICATION_ID));
startActivityForResult(intent, 501);
}
}
В двух приложениях проблема заключается в том, что авторизация не вступает в силу внутри действия, которое запросило авторизацию.
Даже если я завершаю свое действие с помощью Finish() и запускаю снова мое приложение, у меня нет доступа.
Но если я убью свое приложение с помощью диспетчера задач и запущу его, я получу право.
Но когда я уничтожу свое приложение с помощью управления задачами и запускаю это снова, затем я получаю доступ к USB-ключу.
В обоих приложениях для доступа к ключу ISB я использую команды Linux.

[*]С помощью команды mount я проверяю, видит ли USB-ключ Android.
[*]С помощью USBPATH=$(grep -E "^[^ ]+ /mnt/media_rw /[A-Z0-9]{4}-[A-Z0-9]{4} " /proc/mounts | Cut -d' ' -f2) Я получаю путь к ключу
С ls $USBPATH я вижу, что у меня нет прав даже после того, как MANAGE_EXTERNAL_STORAGE было предоставлено, потому что ls возвращает «разрешение отклонено».


Подробнее здесь: https://stackoverflow.com/questions/782 ... -all-files
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»