0

Я пытаюсь загрузить файл с помощью DownloadManagerDownloadManager не работает внутри фрагмента в Android

Тот же самый код работает в деятельности, но не работает в фрагменте. В чем проблема? Текст ниже может быть проблема, но пожалуйста, просмотрите весь код

в деятельности я использовал DownloadManager manager = (DownloadManager) getBaseContext().getSystemService(Context.DOWNLOAD_SERVICE);

В фрагменте я использовал DownloadManager manager = (DownloadManager) getActivity().getBaseContext().getSystemService(Context.DOWNLOAD_SERVICE); внутри download.setOnClickListener()

String myHTTPurl = "http://status9.in/ankushfiles/it2.html"; 
    File file; 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    String title = getTitle(); 
    webView = (WebView) getActivity().findViewById(R.id.webView); 
    download = (Button) getActivity().findViewById(R.id.bDownloadTT); 


    file = new File(Environment.getExternalStoragePublicDirectory("/sdcard/KiiTTimeTableData"), "it2.html"); 
    if(file.exists()) 
    { 
     Toast.makeText(getActivity(), "File Exists", Toast.LENGTH_SHORT).show(); 
     webView.loadUrl("file://"+Environment.getExternalStorageDirectory()+"/sdcard/KiiTTimeTableData/it2.html"); 
    } 
    else 
    { 
     Toast.makeText(getActivity(), "File Does Not Exist", Toast.LENGTH_SHORT).show(); 
     webView.setVisibility(View.INVISIBLE); 
    } 

    download.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      file.delete(); 
      DownloadManager.Request request = new DownloadManager.Request(Uri.parse(myHTTPurl)); 
      request.setTitle("File Download"); 
      request.setDescription("Downloading...."); 

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

      request.setDestinationInExternalPublicDir("sdcard/KiiTTimeTableData", nameOfFile); 
      DownloadManager manager = (DownloadManager) getActivity().getBaseContext().getSystemService(Context.DOWNLOAD_SERVICE); 
      manager.enqueue(request); 
     } 
    }); 

} 
+0

использовать только этот менеджер загрузкиManager = (DownloadManager) getActivity(). GetSystemService (Context.DOWNLOAD_SERVICE); –

+0

@quicklearner не работает – akkk

+0

@akkk Вы не должны использовать базовый контекст в [общем] (https://groups.google.com/d/msg/android-developers/2-XxjT26mqk/2xZfYx-YS_oJ) , Что вы подразумеваете конкретно, это «не работает»? В какой момент ваш код сломается? – Bryan

ответ

0

В фрагменте я думаю, вы должны инициализировать и возвращать Views в методе onCreateView. Чтение этой статьи follwing:

Difference and uses of onCreate(), onCreateView() and onActivityCreated() in fragmentsWhen to use onCreateView for fragments?

И что это войти ваши ошибки?

Вы уверены, что эти две следующие разрешения были объявлены?

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
Смежные вопросы