где универсальное приложение может писать на SD-карту?

У меня есть планшет с KitKat, и я столкнулся с проблемой невозможности записи на SD-карту (в частности, с QPython). Я не могу рутировать планшет (пока).

Насколько я понимаю, приложение может записывать только в специальный каталог, который создается на время жизни приложения в /extSdCard/Android/data.

Действительно, я вижу там кучу каталогов, некоторые из которых имеют имена, которые принадлежат моим приложениям (это похоже на способ именования в стиле Java, я не знаю Java, но я видел несколько впечатляющих дампов стека с такой номенклатурой ).

Теперь я не вижу ничего близкого к QPython, что вызывает вопросы:

  • все ли приложения создают по умолчанию этот специальный каталог?
  • если да: как я могу сопоставить имя приложения с каталогом?
  • если нет: есть ли способ записи такого приложения на SD-карту?

Ответы (1)

На эти вопросы довольно легко ответить:

  1. Нет, Android создает только эти папки, если они используются. Это справедливо как для внутренней SD, так и для внешней SD.
  2. Есть много способов получить имя пакета (это внутреннее имя) приложения. Самый простой способ — перейти в http://play.google.com(Google Play Store) на ПК и открыть там страницу приложения, а затем просто посмотреть на последнюю часть URL-адреса: например, https://play.google.com/store/apps/details?id=com.hipipal.qpyplus( id=часть). Ибо QPythonэто: com.hipipal.qpyplus.
  3. Каждое приложение может писать в свою папку. Для чтения или записи в другие папки на внешней SD-карте требуются специальные разрешения.
Спасибо. Re: 1: "если они используются" значит "когда приложение запрашивает их создать"? Другими словами, если они не будут созданы при установке приложения, у него не будет возможности писать на SD-карту никогда? Моя QPythonустановка не создавалась /extSdCard/Android/data/com.hipipal.qpyplus- значит ли это, что ни один из сценариев, которые я напишу (и которые будут запускаться этим приложением, унаследовавшим его права доступа), не будет иметь возможности записи на внешнюю SD-карту?
Android автоматически создает эти папки, когда приложение впервые пытается выполнить запись в эту папку. Убедитесь, что QPythonу вас есть все необходимые разрешения для этого.
Я попытался создать каталог из приложения (не удалось) и напрямую записать в файл в этом несуществующем каталоге (надеясь, что он появится чудом, но и это не удалось).