虽然以前做过几年Android开发,并且一直都陆陆续续有接Android App的项目,但由于Android的发展很迅速,版本更新很快,所以很多涉及到新版本的内容暂时都不了解。
例如一个简单的DownloadManager进度的获取,我在自己手上的几个手机上都能正常获取,但在Android 7.0上获取不了。
查了一下才知道Android 7.0上已经废弃了COLUMN_LOCAL_FILENAME字段,需要使用COLUMN_LOCAL_URI字段。
代码如下所示:
int fileName = 0;
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
//android 7.0以后使用COLUMN_LOCAL_URI字段
fileName = cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI);
}else {
fileName = cursor.getColumnIndex(DownloadManager.COLUMN_LOCAL_FILENAME);
}
int fileUri = cursor.getColumnIndex(DownloadManager.COLUMN_URI);
String fn = cursor.getString(fileName);
String fu = cursor.getString(fileUri);
int totalSizeBytesIndex = cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES);
int bytesDownloadSoFarIndex = cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR);
// 下载的文件总大小
int totalSizeBytes = cursor.getInt(totalSizeBytesIndex);
// 截止目前已经下载的文件总大小
int bytesDownloadSoFar = cursor.getInt(bytesDownloadSoFarIndex);
这样就能正确获取到DownloadManager的下载进度了。
文章评论