Android mkdir не делает папку - PullRequest
24 голосов
/ 11 мая 2011

Сегодня у меня проблемы с выполнением чего-то, что, на мой взгляд, было бы просто ... создание папки в /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 помешать созданию папки?

Спасибо!

Ответы [ 2 ]

42 голосов
/ 11 мая 2011

Существует ли каталог /mnt/sdcard/tallgrass/? (Наверное, нет, но вы никогда не знаете.)

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

0 голосов
/ 13 мая 2014

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

 <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"
...