如何使用.openFileDescriptor()打开下载的文件

时间:2016-11-23 12:40:51

标签: android

我曾经使用以下代码打开下载的文件:

final String filePath = cursor.getString(
                        cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LOCAL_FILENAME));
                    if (TextUtils2.isNotEmpty(filePath)) {
                        apkFile = Uri.fromFile(new File(filePath));
                    }
                   startActivity(new Intent(Intent.ACTION_VIEW)
                                    .setDataAndType(apkFile, UPDATE_APK_FILE_MIME_TYPE)
                                    .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));

但是从API 24下载了DownloadManager.COLUMN_LOCAL_FILENAME,我需要使用openFileDescriptor(Uri uri,                 字符串模式)方法。 但我不知道如何从Fd获取文件路径以将其用作意图的数据。

有谁知道怎么做或者打开下载文件的替代方案?

2 个答案:

答案 0 :(得分:0)

而不是

cursor.getString(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LOCAL_FILENAME)

你可以使用

cursor.getString(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LOCAL_URI)

返回你需要的apk文件的uri

答案 1 :(得分:0)

仅检索下载文件的旧的绝对路径:

String absolutePath =  Uri.parse(cursor.getString(cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI))).getPath();

当然:

File file = new File(absolutePath);