Менеджер загрузок не работал, когда включен APN

#java #android-studio #android-11

Вопрос:

У меня есть этот метод в моем приложении, и он отлично работает, но на Android 11(Xiaomi), когда включен APN, он не работает. в режиме отладки все крутится и не «гремит», но файл просто не загружается. Также получатель не получил ссылку на загрузку. И все это происходит ТОЛЬКО тогда, когда включен APN. Я думаю, что настройки APN в порядке, потому что у меня есть связь с моей службой WCF.

 public void showUpdatePromtDialog() {  AlertDialog.Builder builder = new AlertDialog.Builder(OrmBaseActivity.this);  builder.setMessage("Налична е нова версия на приложението. За да продължите работа   трябва да го обновите сега. Натиснете бутон 'Обнови' за да продължите.")  .setCancelable(false)  .setPositiveButton("Обнови", new DialogInterface.OnClickListener() {  //if the user agrees to upgrade  public void onClick(DialogInterface dialog, int id) {  try {      //deletes old APKs in the directory  File dir = new File(OrmBaseActivity.this.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS) "");     if (dir.isDirectory())   {  String[] children = dir.list();  for (int i = 0; i lt; children.length; i  )  {  new File(dir, children[i]).delete();  }  }    //start downloading the file using the download manager  downloadManager = (DownloadManager)getSystemService(DOWNLOAD_SERVICE);  String url = getURL().replace("myServices.svc", "");  Uri Download_Uri = Uri.parse(url   "ApkLatestVersion/myFile.apk");  DownloadManager.Request request = new DownloadManager.Request(Download_Uri);  /*request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);  request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE);*/  request.setAllowedOverRoaming(false);  request.setTitle("myAPP App Download");  request.setDestinationInExternalFilesDir(OrmBaseActivity.this, Environment.DIRECTORY_DOWNLOADS,"myFile.apk");    downloadReference = downloadManager.enqueue(request);    } catch (Exception e) {  e.printStackTrace();  dialog.dismiss();  Toast.makeText(OrmBaseActivity.this, "Възникна грешка. Моля, опитайте отново.", Toast.LENGTH_SHORT).show();  }    }  });  /*.setNegativeButton("За по-късно", new DialogInterface.OnClickListener() {  public void onClick(DialogInterface dialog, int id) {  // User cancelled the dialog  }  });*/  //show the alert message  builder.create().show(); }  

Ответ №1:

Попробуйте добавить это в свой manifest file in application tag

 android:requestLegacyExternalStorage="true"  

Комментарии:

1. Спасибо за вашу поддержку. Я пытался использовать это, но мой проект предназначен для :minSdkVersion 17, targetSdkVersion 16 и compileSdkVersion 16, по этой причине компилятор говорит — Неизвестный атрибут android:requestLegacyExternalStorage

2. какую версию minSdkVersion вы в настоящее время используете?..

3. Минсдкверсия 17

4. Компиляторы 29 и целевые версии 29 используют..?

5. Просто удалите строку android:requestLegacyExternalStorage=»true». Вы можете использовать в соответствии с Api 29.