如何查询系统DownloadProvider中所有的下载项?

How to query all the download item from the system DownloadProvider?

有没有什么方法可以从系统downloadprovider查询所有的下载项目,我就是这样做的,但是它需要permission:android。permission.ACCESS_ALL_DOWNLOADS,最糟糕的是,这个权限在签名中级别,我无法获得此权限,还有其他解决方案吗 this.And 我只想开发一个应用程序来管理 system.thanks 的下载!

int columnId = c.getColumnIndex(DownloadManager.COLUMN_ID);
            int columnTitle = c.getColumnIndex(DownloadManager.COLUMN_TITLE);
            Log.d(TAG, "query complete!-->" + c.getCount());
            for (int i = 0; c.getColumnName(i) != null; i++)
                Log.d(TAG, c.getColumnName(i));
            while (c.moveToNext()) {
                int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));
                long id = c.getLong(c.getColumnIndex(DownloadManager.COLUMN_ID));
                String title = c.getString(c.getColumnIndex(DownloadManager.COLUMN_TITLE));
                switch (status) {
                case DownloadManager.STATUS_PAUSED:
                    Log.d(TAG, "query one  paused task:" + status + "-" + title + "-" + id);
                    break;
                case DownloadManager.STATUS_PENDING:
                    Log.d(TAG, "query one  pending task:" + status + "-" + title + "-" + id);
                    break;
                case DownloadManager.STATUS_RUNNING:
                    Log.d(TAG, "query one  running task:" + status + "-" + title + "-" + id);
                    break;
                case DownloadManager.STATUS_SUCCESSFUL:
                    Log.d(TAG, "query one  success task:" + status + "-" + title + "-" + id);
                    break;
                case DownloadManager.STATUS_FAILED:
                    Log.d(TAG, "query one failed task:" + status + "-" + title + "-" + id);
                    // downloadManager.remove(id);
                    break;
                }
            }

如您所见,查询 content://downloads/all_downloads URI 的唯一方法是使用 android.permission.ACCESS_ALL_DOWNLOADS,这是签名级权限。这是有意为之的,意味着无法从未使用系统签名签名的第三方应用程序读取所有下载内容。