Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓-我能';不要尝试打开文件,而是从文件资源管理器打开_Java_Android_Android Studio_Fileprovider - Fatal编程技术网

Java 安卓-我能';不要尝试打开文件,而是从文件资源管理器打开

Java 安卓-我能';不要尝试打开文件,而是从文件资源管理器打开,java,android,android-studio,fileprovider,Java,Android,Android Studio,Fileprovider,你好 我正在制作一个应用程序,其中我必须从数据库加载一些带有数据和图像或文档的cardview,当按下此元素以获得下载文件的选项时,下载完成后,提供从应用程序打开文件的可能性。在打开文件(图像、word文档、excel等)之前,所有这些都可以正常工作。在这一点上,android studio控制台或应用程序都不会向我显示任何错误,只有在打开文件时才会显示为已损坏(当它是图像时,尽管如果我从文件浏览器打开它,它会毫无问题地打开)当它是一个文档时,它会像文件是空的一样打开,或者像是一个新文件一样打开

你好

我正在制作一个应用程序,其中我必须从数据库加载一些带有数据和图像或文档的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>