【问题标题】:Unable to create directory in Android Error无法在 Android 错误中创建目录
【发布时间】:2016-11-25 15:52:33
【问题描述】:

我正在尝试从服务器下载文件并将其存储在存储中,但代码给出错误 - Unable to create directory。请检查错误

任务 - 从服务器下载文件,然后将其加载到 android 的 webview 中。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    webView = (WebView) findViewById(R.id.webView);
    try {
        webView.loadUrl("file://" + Environment.getExternalStorageDirectory() + "/sponsors/"+ "dddd.html");
    }
    catch (Exception e)
    {
        Toast.makeText(MainActivity.this, "File Doesn't Exist", Toast.LENGTH_SHORT).show();
    }
    try {
        myDownloadLast("http://192.168.76.1:8084/MyTest/dddd.html");
    }
    catch (Exception e)
    {
        Toast.makeText(this, e.getMessage()+"\n"+e.getCause(), Toast.LENGTH_SHORT).show();
    }
}
public void myDownloadLast(String myURL) {

    DownloadManager.Request request = new DownloadManager.Request(Uri.parse(myURL));
    request.setTitle("Updating TimeTable");
    request.setDescription("Please Wait");

    //request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
    request.allowScanningByMediaScanner();
    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
    //request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);
    String nameOfFile = URLUtil.guessFileName(myURL, null, MimeTypeMap.getFileExtensionFromUrl(myURL));

    File myFile = new File(String.valueOf(Environment.getExternalStoragePublicDirectory("/sponsors/")));
    if(!myFile.exists()){
        myFile.mkdir();
    }
    try {
        request.setDestinationInExternalPublicDir(String.valueOf(myFile), nameOfFile);
    }
    catch (Exception e)
    {
        Toast.makeText(this, e.getMessage()+"\n"+e.getCause(), Toast.LENGTH_SHORT).show();
    }
    DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
    manager.enqueue(request);
    BroadcastReceiver onComplete = new BroadcastReceiver() {
        public void onReceive(Context ctxt, Intent intent) {
            //Toast.makeText(getActivity(), "Download Complete", Toast.LENGTH_LONG).show();
            Toast.makeText(getApplicationContext(), "Update Complete\nFor Best Performance\nRestart The App", Toast.LENGTH_SHORT).show();
        }
    };
    registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
}

【问题讨论】:

  • 请发布您的日志或堆栈跟踪(如果有)。
  • myFile.mkdir();。那应该是 if(!myFile.mkdir()) return; 并显示一个 toast 来通知用户。
  • but the code gives error。代码?请准确。哪种说法?哪条线?
  • 为什么文件已经在设备上,你还要下载它?

标签: android android-file android-download-manager


【解决方案1】:

您的问题可能与一些嫌疑人有关

确保拥有Android Manifest

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

另外,请使用以下内容引用外部目录:

String name = Environment.getExternalStorageDirectory().getAbsolutePath() + "/DirectoryNameYouWant/" ;

【讨论】:

    猜你喜欢
    • 2015-04-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多