2015-08-29 95 views
0

我的應用程序中存在此問題。我想創建一個文件夾在模擬器SDcard,但它沒有工作,我不知道爲什麼!我試過mkdir和mkdirs。我向清單添加了WRITE_EXTERNAL_STORAGE權限。我嘗試使用MediaScannerConnection並沒有工作!我在谷歌上搜索了很多,並嘗試了很多實施,但沒有改變!你能告訴我什麼可能是問題!無法在Sdcard中創建文件夾android

票數是我的代碼:

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!!"); 
    } 
} 

我的清單看起來像這樣:

<?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()'只有 – 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手機它wotks,但在模擬器不!我不知道爲什麼! – user3232446

+0

嘗試使用不同的API創建新的AVD,例如API16,然後再次測試。只是簡單的方法,因爲在我的回答:) – BNK

+0

我測試了'Environment.getExternalStorageDirectory(),「/ cdp」)'和'Environment.getExternalStorageDirectory()。getAbsolutePath(),「cdp」)的作品。所以我認爲問題在於你的AVD。 – BNK

0

我有同樣的問題 - file.mkdirs()在android模擬器API 23上返回false。並根據BNK的答案設置所有配置。 嘗試將API更改爲19 - 適用於我。看起來像奇怪的模擬器/ Android版本問題。

相關問題