Java 安卓-我能';不要尝试打开文件,而是从文件资源管理器打开
你好 我正在制作一个应用程序,其中我必须从数据库加载一些带有数据和图像或文档的cardview,当按下此元素以获得下载文件的选项时,下载完成后,提供从应用程序打开文件的可能性。在打开文件(图像、word文档、excel等)之前,所有这些都可以正常工作。在这一点上,android studio控制台或应用程序都不会向我显示任何错误,只有在打开文件时才会显示为已损坏(当它是图像时,尽管如果我从文件浏览器打开它,它会毫无问题地打开)当它是一个文档时,它会像文件是空的一样打开,或者像是一个新文件一样打开 因此,我通过下载管理器获取数据:Java 安卓-我能';不要尝试打开文件,而是从文件资源管理器打开,java,android,android-studio,fileprovider,Java,Android,Android Studio,Fileprovider,你好 我正在制作一个应用程序,其中我必须从数据库加载一些带有数据和图像或文档的cardview,当按下此元素以获得下载文件的选项时,下载完成后,提供从应用程序打开文件的可能性。在打开文件(图像、word文档、excel等)之前,所有这些都可以正常工作。在这一点上,android studio控制台或应用程序都不会向我显示任何错误,只有在打开文件时才会显示为已损坏(当它是图像时,尽管如果我从文件浏览器打开它,它会毫无问题地打开)当它是一个文档时,它会像文件是空的一样打开,或者像是一个新文件一样打开
private void executeDownload() {
ProgressDialog progressDialog = new ProgressDialog(AssignedTasksDetailActivity.this);
progressDialog.setMessage("Descargando Archivo...");
progressDialog.setCancelable(false);
progressDialog.show();
// registrer receiver in order to verify when download is complete
registerReceiver(new DonwloadCompleteReceiver(), new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url_app));
request.setDescription("Descargando Archivo " + filename);
request.setTitle("Descargado "+ filename);
// in order for this if to run, you must use the android 3.2 to compile your app
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
request.allowScanningByMediaScanner();
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
}
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, filename);
// get download service and enqueue file
DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
manager.enqueue(request);
progressDialog.dismiss();
}
下载完成后,我会显示一个alertdialog,以提供打开文件的选项(我认为这是失败的地方):
}
我附加了我的fileprovider配置,以查看是否与此有关:
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.example.coop.fileprovider"
android:grantUriPermissions="true"
android:exported="false">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
及其xml:
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="external"
path="." />
<external-files-path
name="external_files"
path="." />
<cache-path
name="cache"
path="." />
<external-cache-path
name="external_cache"
path="." />
<files-path
name="files"
path="." />
<root-path name="root" path="." />
</paths>
试着用toast查看您试图打开的文件的路径,这是让我联想到的:“content://com.example.coop.fileprovider/root/Download/file_name.extension”
我怎样才能修好它
提前谢谢
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="external"
path="." />
<external-files-path
name="external_files"
path="." />
<cache-path
name="cache"
path="." />
<external-cache-path
name="external_cache"
path="." />
<files-path
name="files"
path="." />
<root-path name="root" path="." />
</paths>