class LongOperation extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
try {
String url2 = "https://www.w3schools.com/w3css/img_fjords.jpg";
String url = url2.replaceAll(" ", "%20");
String fileName = URLUtil.guessFileName(url, null, MimeTypeMap.getFileExtensionFromUrl(url));
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
request.setMimeType(MimeTypeMap.getFileExtensionFromUrl(url));
String cookies = CookieManager.getInstance().getCookie(url);
//request.addRequestHeader("Cookie", cookies);
//request.addRequestHeader("User-Agent", userAgent);
request.setDescription("Downloading File");
//request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE);
request.setTitle("test.png");
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName);
DownloadManager downloadManager = (DownloadManager) module.getActivity().getSystemService(DOWNLOAD_SERVICE);
if (downloadManager != null) {
final long downloadID = downloadManager.enqueue(request);
System.out.println(downloadID);
}
Toast.makeText(module.getActivity(), "Downloading File", Toast.LENGTH_LONG).show();
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
return "Executed";
}
@Override
protected void onPostExecute(String result) {
Log.d("Post Execute","Post Execute");
// might want to change "executed" for the returned string passed
// into onPostExecute() but that is upto you
}
@Override
protected void onPreExecute() {}
@Override
protected void onProgressUpdate(Void... values) {}
}
new LongOperation().execute("");
Я использую приведенный выше код для загрузки изображения с использованием собственного кода Android в моем родном приложении для реагирования. Когда этот метод выполняется, статус загрузки переходит в состояние с именем STATUS_PAUSED -> PAUSED_WAITING_TO_RETRY, и через некоторое время происходит сбой с кодом ошибки ERROR_HTTP_DATA_ERROR. Я дал следующие разрешения в своем манифесте Android, а во время выполнения я также запрашиваю разрешение на хранение.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Что я делаю не так?
android.os.NetworkOnMainThreadException at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork
- person Lakshin Karunaratne   schedule 26.12.2017