在Android中使用Download Manager下载失败的PlaceHolder原因

5 android android-activity

我正在使用下载管理器下载类型(.mov,.pdf,.png)的文件。当我致电下载管理器时,由于占位符原因导致下载失败。占位符是什么意思,该如何解决?请帮忙!

我的代码如下:

DownloadManager.Request request = new DownloadManager.Request(Uri.parse(downloadUrlFile))
    .setDestinationInExternalFilesDir(context,
        (Environment.DIRECTORY_DOWNLOADS), downloadFileName).setNotificationVisibility(visibility);

mEnqueue = downloadManager.enqueue(request);
mDownloadReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        Log.d(TAG, "DOWNLOAD_STATUS"+intent.getAction());
        String action = intent.getAction();
        if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
            Query query = new Query();
            query.setFilterById(mEnqueue);
            Cursor c = downloadManager.query(query);
            if (c.moveToFirst()) {
                int columnIndex = c            .getColumnIndex(DownloadManager.COLUMN_STATUS);
                Log.d("getColumnIndex()", "Reason: " + c
                        .getColumnIndex(DownloadManager.COLUMN_STATUS)+DownloadManager.STATUS_SUCCESSFUL);
                if (DownloadManager.STATUS_SUCCESSFUL == c.getInt(columnIndex)) {
                    Log.d(TAG, "DOWNLOAD_STATUS_SUCCESSFUL");
                } else if (DownloadManager.STATUS_FAILED == c.getInt(columnIndex)) {
                    Log.d("handleData()", "Reason: " + c.getString(c.getColumnIndex(DownloadManager.COLUMN_REASON)));
                    Log.d(TAG, "DOWNLOAD_STATUS_FAILED");
                } 
            } 
        } 
    } 
};
Run Code Online (Sandbox Code Playgroud)

the*_*itz 5

问题在于“ COLUMN_REASON”列是一个int而不是String(尽管我看到一些示例暗示它是一个字符串)。

因此,您应该使用:

Log.d("handleData()", "Reason: " + c.getInt(c.getColumnIndex(DownloadManager.COLUMN_REASON)));
Run Code Online (Sandbox Code Playgroud)

可以找到该值: 此处 和 此处