Android 6 (cyanogenmod 13) доступ для записи на внешнюю SD-карту

Я всегда использовал приложение «Сервер Samba» на всех своих устройствах Android для загрузки файлов, оно отлично работало с CM12, но в CM13 даже с корневым доступом сервер Samba не может записывать на внешнюю SD-карту, равно как и приложение «SSH-сервер». Как и в Android 6, были некоторые изменения, но есть ли способ предоставить доступ для записи на внешнюю SD-карту для некоторых приложений? Я пробовал разные самба-сервера, все они видят внешнюю SD-карту и могут читать оттуда, но просто не могут писать.

У меня такая же проблема с Cyanogenmod 13 на двух разных устройствах, пробовал форматировать внешнюю SD карту в ext3, ext4, fat32, exfat - никакой разницы. В игровом магазине есть много приложений для исправления SD-карты, но все они, как я вижу, для Android 5 и просто не работают для Android 6.

Итак, это проблема SELinux? Должен ли я как-то добавить пользователя, от которого запускается приложение, в media_rwгруппу? Как я могу это сделать? Вывод после подключения по idssh:

uid=10138(u0_a138) gid=10138(u0_a138) groups=10138(u0_a138),3002(net_bt),3003(inet),9997(everybody),50138(all_a138) context=u:r:untrusted_app:s0:c512,c768

Он может читать, но не может писать на внешнюю SD-карту, есть идеи? Спасибо.

Ответы (1)

Как я выяснил на данный момент, нет никакого способа дать такое разрешение, кроме запуска всего приложения от имени пользователя root, и это непросто (или даже возможно?) без изменения кода приложения, в любом случае запуск приложений с uid = 0 является плохая идея в любом случае. Проблема в том, что в Android 6 WRITE_EXTERNAL_STORAGEразрешение должно запрашиваться приложением во время выполнения, и если приложение не поддерживает Android 6, мы практически ничего не можем сделать. Я надеюсь, что разработчики скоро адаптируют свое приложение к новой реальности Android 6.