有没有什么方法可以得到;下载管理器“;android上的状态为服务?
我正在使用android。我想通过我的应用程序使用下载管理器跟踪所有下载。我希望在我的应用程序中获得下载管理器状态作为一项服务。我用了密码有没有什么方法可以得到;下载管理器“;android上的状态为服务?,android,android-download-manager,Android,Android Download Manager,我正在使用android。我想通过我的应用程序使用下载管理器跟踪所有下载。我希望在我的应用程序中获得下载管理器状态作为一项服务。我用了密码 DownloadManager.Query query = null; Cursor c = null; DownloadManager downloadManager = null; downloadManager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE); query =
DownloadManager.Query query = null;
Cursor c = null;
DownloadManager downloadManager = null;
downloadManager = (DownloadManager)getSystemService(Context.DOWNLOAD_SERVICE);
query = new DownloadManager.Query();
if(query!=null) {
query.setFilterByStatus(DownloadManager.STATUS_FAILED|DownloadManager.STATUS_PAUSED|DownloadManager.STATUS_SUCCESSFUL|
DownloadManager.STATUS_RUNNING|DownloadManager.STATUS_PENDING);
} else {
return;
}
c = downloadManager.query(query);
if(c.moveToFirst()) {
int status = c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS));
switch(status) {
case DownloadManager.STATUS_PAUSED:
break;
case DownloadManager.STATUS_PENDING:
break;
case DownloadManager.STATUS_RUNNING:
break;
case DownloadManager.STATUS_SUCCESSFUL:
break;
case DownloadManager.STATUS_FAILED:
break;
}
}
但它不起作用。有没有可能用其他方法获得下载管理器状态??请先帮我谢谢:)您对开关/机箱中的状态不做任何处理。在
中断之前,添加您想要对每个状态执行的操作每个案例的代码>。使用此服务类监视您的下载
public class MyService extends Service {
private Timer timer;
private TimerTask timerTask;
private static final int SAMPLING_RATE = 1000;
public MyService() {
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
@Deprecated
public void onStart(Intent intent, int startId) {
Log.e("Download", "onstart");
}
@Override
public void onCreate() {
timer = new Timer();
timerTask = new TimerTask() {
@Override
public void run() {
// Log.d(MyService.class.toString(),
// "tic ... "+System.currentTimeMillis());
getDownloadData();
}
};
if (timer != null && timerTask != null) {
timer.schedule(timerTask, 0, SAMPLING_RATE);
}
}
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@SuppressLint("NewApi")
public void getDownloadData() {
DownloadManager downloadMgr = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
DownloadManager.Query query = new DownloadManager.Query();
query.setFilterByStatus(DownloadManager.STATUS_FAILED
| DownloadManager.STATUS_PENDING
| DownloadManager.STATUS_RUNNING
| DownloadManager.STATUS_SUCCESSFUL);
Cursor c = downloadMgr.query(query);
if (c == null) {
System.out.println("--------------------------");
} else {
if (c.moveToFirst()) {
System.out.println("------------End--------------");
while (c.isAfterLast() == false) {
getStatus(c);
c.moveToNext();
}
}
}
}
public void getStatus(Cursor c) {
int columnIndex = c.getColumnIndex(DownloadManager.COLUMN_STATUS);
int columnReason = c.getColumnIndex(DownloadManager.COLUMN_REASON);
int reason = c.getInt(columnReason);
int status = c.getInt(columnIndex);
String statusText = null;
String reasonText = null;
switch (status) {
case DownloadManager.STATUS_FAILED:
statusText = "STATUS_FAILED";
switch (reason) {
case DownloadManager.ERROR_CANNOT_RESUME:
reasonText = "ERROR_CANNOT_RESUME";
break;
case DownloadManager.ERROR_DEVICE_NOT_FOUND:
reasonText = "ERROR_DEVICE_NOT_FOUND";
break;
case DownloadManager.ERROR_FILE_ALREADY_EXISTS:
reasonText = "ERROR_FILE_ALREADY_EXISTS";
break;
case DownloadManager.ERROR_FILE_ERROR:
reasonText = "ERROR_FILE_ERROR";
break;
case DownloadManager.ERROR_HTTP_DATA_ERROR:
reasonText = "ERROR_HTTP_DATA_ERROR";
break;
case DownloadManager.ERROR_INSUFFICIENT_SPACE:
reasonText = "ERROR_INSUFFICIENT_SPACE";
break;
case DownloadManager.ERROR_TOO_MANY_REDIRECTS:
reasonText = "ERROR_TOO_MANY_REDIRECTS";
break;
case DownloadManager.ERROR_UNHANDLED_HTTP_CODE:
reasonText = "ERROR_UNHANDLED_HTTP_CODE";
break;
case DownloadManager.ERROR_UNKNOWN:
reasonText = "ERROR_UNKNOWN";
break;
}
break;
case DownloadManager.STATUS_PAUSED:
statusText = "STATUS_PAUSED";
switch (reason) {
case DownloadManager.PAUSED_QUEUED_FOR_WIFI:
reasonText = "PAUSED_QUEUED_FOR_WIFI";
break;
case DownloadManager.PAUSED_UNKNOWN:
reasonText = "PAUSED_UNKNOWN";
break;
case DownloadManager.PAUSED_WAITING_FOR_NETWORK:
reasonText = "PAUSED_WAITING_FOR_NETWORK";
break;
case DownloadManager.PAUSED_WAITING_TO_RETRY:
reasonText = "PAUSED_WAITING_TO_RETRY";
break;
}
break;
case DownloadManager.STATUS_PENDING:
statusText = "STATUS_PENDING";
break;
case DownloadManager.STATUS_RUNNING:
statusText = "STATUS_RUNNING";
break;
case DownloadManager.STATUS_SUCCESSFUL:
statusText = "STATUS_SUCCESSFUL";
break;
}
Log.d("status", statusText + " " + reasonText);
}
}