Android mkdir не создает папку

Сегодня вечером у меня возникли проблемы с выполнением чего-то, что, как я думал, будет простым ... создание папки в / mnt / sdcard.

Я установил следующее разрешение:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

Мой Main.java должен сделать папку следующим образом:

public class Main extends TabActivity {
    static int index = 1;
    private static final String TAG = "Main";       

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        File folder = new File(Environment.getExternalStorageDirectory () + "/tallgrass/images");
        boolean success = false;
        if(!folder.exists()){
            success = folder.mkdir();
        }
        if (!success){ 
            Log.d(TAG,"Folder not created.");
        }
        else{
            Log.d(TAG,"Folder created!");
        }
    }

Получаю "Папка создана!" сообщение в моем журнале, но когда я проверяю и /mnt/sdcard, и /sdcard, ни у кого нет папки. Я пробовал позвонить:

Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())

и он возвращает истину. Я просто не могу понять этого, потому что все признаки указывают на то, что он должен работать. Я также пробовал это с телефоном, отключенным от ПК, на случай, если SD-карта была установлена ​​или что-то в этом роде, поскольку в настоящее время я использую свой телефон вместо эмулятора для разработки. Кстати, не мешает ли debuggable - true создать папку?

Спасибо!


person Taylor Kems    schedule 11.05.2011    source источник


Ответы (3)


Каталог /mnt/sdcard/tallgrass/ существует? (Полагаю, что нет, но мало ли.)

Метод File.mkdirs() создаст все необходимые каталоги; mkdir() создаст только последний каталог в пути.

person sarnold    schedule 11.05.2011
comment
Вот и все! Я пытался опубликовать ответ, так как понял это через несколько секунд после публикации, но, будучи новым пользователем, я не мог ответить на свой собственный пост. Я проверю это, как только мне это будет позволено. Спасибо! - person Taylor Kems; 11.05.2011
comment
Ооо! В основном автоматизированные меры здесь достаточно разумны (и очень эффективны для борьбы со спамом), но новые пользователи иногда несут на себе основную тяжесть этих ограничений. В любом случае, добро пожаловать в SO! :) - person sarnold; 11.05.2011

Проверьте, где вы размещаете разрешения, которые они должны получить, следующим образом:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="edu.una.info.app">
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.CALL_PHONE" />

<application android:allowBackup="true"
    android:label="@string/app_name"
    android:icon="@drawable/ic_launcher"
    android:theme="@style/AppTheme">

    <activity
        android:name="edu.una.info.SplashScreenActivity"
person user3470042    schedule 13.05.2014

Попробуйте использовать другое устройство. Проблема существует с моим устройством-эмулятором, но когда я подключил свой Oneplus 5T, он создал папку (у моего Oneplus нет внешнего MicroSD).

Но в то же время мой эмулятор (Pixel 3) вообще не создает папку.

По крайней мере, с разрешениями все в порядке.

person Abhishek    schedule 16.05.2020