2016-07-21 3 views
0

Я пытаюсь загрузить файл с сервера и сохранить его в хранилище, но код дает ошибку - Unable to create directory. Пожалуйста, проверьте наличие ошибкиНе удалось создать каталог в Android Error

Задача - Файл загружается с сервера, а затем он загружается в webview в android.

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)); 
} 
+0

Пожалуйста, разместите свой журнал или трассировку стека, если вы h авы их. –

+0

'myFile.mkdir();'. Это должно быть 'if (! MyFile.mkdir()) return;' И показывать тост, чтобы информировать пользователя. – greenapps

+0

', но код дает ошибку'. Код? Пожалуйста, будьте точны. В каком заявлении? Какая линия? – greenapps

ответ

1

Ваша проблема может быть связана с несколькими подозреваемыми

Убедитесь, что имеют разрешения на Android Manifest

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

Кроме того, обратитесь к внешней директории со следующим:

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