2015-08-29 6 views
0

У меня есть эта проблема в моем приложении. Я хочу создать папку в SD-карте эмулятора, но она не работает, я не знаю, почему! Я пробовал mkdir и mkdirs. Я добавил WRITE_EXTERNAL_STORAGE Разрешение на манифест. Я пытался с MediaScannerConnection и не работал! Я много искал в Google и много раз пробовал, но никаких изменений! не могли бы вы рассказать мне, пожалуйста, что может быть проблемой!Невозможно создать папку в Sdcard android

Hier мой код:

public void createDirIfNotExists() { 


    File folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/cdp"); 
    boolean success = true; 
    if (!folder.exists()) { 
     success = folder.mkdirs(); 
    } 
    if (success) { 

     Log.e("Folder: ", "folder created!!"); 
    } else { 
     Log.e("Folder Error: ", "folder cannot be created!!"); 
    } 
} 

мой Manifest выглядеть следующим образом:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.aboussof.myapplication" > 

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
    </activity> 

    <activity android:name=".Test"> 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 

    </activity> 
</application> 

и поэтому я пытаюсь создать папку:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 
    mProgressDialog = new ProgressDialog(Test.this); 
    mProgressDialog.setMessage("A message"); 
    mProgressDialog.setIndeterminate(true); 
    mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
    mProgressDialog.setCancelable(true); 

    // execute this when the downloader must be fired 
    final DownloadTask downloadTask = new DownloadTask(Test.this); 
    createDirIfNotExists(); 
    downloadTask.execute("http://www.sample-videos.com/video/mp4/720/big_buck_bunny_720p_5mb.mp4"); 

    mProgressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() { 
     @Override 
     public void onCancel(DialogInterface dialog) { 
      downloadTask.cancel(true); 
     } 
    }); 

} 

благодарственное вы.

+1

Я думаю, вам не нужно '.getAbsolutePath()', поэтому попробуйте удалить его и используйте 'Environment.getExternalStorageDirectory()' only – BNK

+0

thx для вашего ответа. Я попробовал, но проблема все еще существует. – user3232446

+1

Попробуйте еще один, удалите '/' перед 'cdp' – BNK

ответ

0

Заменить

File folder = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/cdp"); 

с

File folder = new File(Environment.getExternalStorageDirectory() + "/", "cdp"); 
+0

проблема все еще существует – user3232446

0

Вы решенной проблему еще? Я использую свой метод с крошечным изменения в

File folder = new File(Environment.getExternalStorageDirectory(), "cdp"); 

И результат, как на следующем скриншоте:

enter image description here

enter image description here

Моя конфигурация AVD, как следующее:

enter image description here

+0

Thx для вашего ответа. Я пробовал те же шаги, что и показано, но проблема Stil существует !! На моем Android-телефоне это звучит, но на эмуляторе нет! Я не знаю почему! – user3232446

+0

Попробуйте создать новый AVD с различным API, например API16, и повторите тест.просто метод, как в моем ответе :) – BNK

+0

Я тестировал как «Environment.getExternalStorageDirectory(),«/cdp »), так и« Environment.getExternalStorageDirectory(). getAbsolutePath(), «cdp»). Поэтому я считаю, что проблема заключается в вашем AVD. – BNK

0

У меня была та же проблема. File.mkdirs() возвращает false в API-интерфейсе 23 разработчика Android. И все конфиги были установлены в соответствии с ответом BNK. Попробуйте изменить API на 19 - он работает для меня. Похоже на странную проблему с эмулятором/версией Android.

Смежные вопросы