#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.