android文件下载含服务器端,制作http/https文件共享服务器的Android下载管理器
我正在使用下載管理器的Android方下載來自不同來源的文件。現(xiàn)在我應(yīng)該為這個應(yīng)用程序創(chuàng)建一個服務(wù)器端。制作http/https文件共享服務(wù)器的Android下載管理器
的一切都在這里首先是為Android端簡單的代碼:
private DownloadManager mgr = null;
private long lastDownload = -1L;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mgr = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
registerReceiver(onComplete, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
registerReceiver(onNotificationClick, new IntentFilter(DownloadManager.ACTION_NOTIFICATION_CLICKED));
}
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(onComplete);
unregisterReceiver(onNotificationClick);
}
public void startDownload(View v) {
// Uri uri = Uri.parse("http://commonsware.com/misc/test.mp4");
Uri uri = Uri.parse("http://xxx.xxx.xxx.xxx:8080/FileUpload/asd.mp3");
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).mkdirs();
lastDownload = mgr.enqueue(new DownloadManager.Request(uri)
.setAllowedNetworkTypes(
DownloadManager.Request.NETWORK_WIFI | DownloadManager.Request.NETWORK_MOBILE)
.setAllowedOverRoaming(false).setTitle("Demo")
.setDescription("Something useful. No, really.")
.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "test.mp4"));
v.setEnabled(false);
findViewById(R.id.query).setEnabled(true);
}
public void queryStatus(View v) {
Cursor c = mgr.query(new DownloadManager.Query().setFilterById(lastDownload));
if (c == null) {
Toast.makeText(this, "Download not found!", Toast.LENGTH_LONG).show();
} else {
c.moveToFirst();
Log.d(getClass().getName(),
"COLUMN_ID: " + c.getLong(c.getColumnIndex(DownloadManager.COLUMN_ID)));
Log.d(getClass().getName(),
"COLUMN_BYTES_DOWNLOADED_SO_FAR: "
+ c.getLong(c.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR)));
Log.d(getClass().getName(),
"COLUMN_LAST_MODIFIED_TIMESTAMP: "
+ c.getLong(c.getColumnIndex(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP)));
Log.d(getClass().getName(),
"COLUMN_LOCAL_URI: " + c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI)));
Log.d(getClass().getName(),
"COLUMN_STATUS: " + c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS)));
Log.d(getClass().getName(),
"COLUMN_REASON: " + c.getInt(c.getColumnIndex(DownloadManager.COLUMN_REASON)));
Toast.makeText(this, statusMessage(c), Toast.LENGTH_LONG).show();
}
}
public void viewLog(View v) {
startActivity(new Intent(DownloadManager.ACTION_VIEW_DOWNLOADS));
}
private String statusMessage(Cursor c) {
String msg = "???";
switch (c.getInt(c.getColumnIndex(DownloadManager.COLUMN_STATUS))) {
case DownloadManager.STATUS_FAILED:
msg = "Download failed!";
break;
case DownloadManager.STATUS_PAUSED:
msg = "Download paused!";
break;
case DownloadManager.STATUS_PENDING:
msg = "Download pending!";
break;
case DownloadManager.STATUS_RUNNING:
msg = "Download in progress!";
break;
case DownloadManager.STATUS_SUCCESSFUL:
msg = "Download complete!";
break;
default:
msg = "Download is nowhere in sight";
break;
}
return (msg);
}
BroadcastReceiver onComplete = new BroadcastReceiver() {
public void onReceive(Context ctxt, Intent intent) {
findViewById(R.id.start).setEnabled(true);
}
};
BroadcastReceiver onNotificationClick = new BroadcastReceiver() {
public void onReceive(Context ctxt, Intent intent) {
Toast.makeText(ctxt, "Ummmm...hi!", Toast.LENGTH_LONG).show();
}
};
正如你可以看到我tryed使用它。如果我把一些文件放入WebProject - > WebContent * 比我可以下載它 *。但我需要訪問服務(wù)器計算機(jī)中的所有文件。 (我認(rèn)為我應(yīng)該使用一個servlet,它可以處理下載管理器的請求,并可以以某種方式上傳文件,但我不確定它。)Android的下載管理器只能處理HTTP和HTTPS。
我將實(shí)現(xiàn)服務(wù)器端,但我真的不知道該怎么做,所以問題是:我如何能實(shí)現(xiàn)一個合適的服務(wù)器端可以服務(wù)于該下載管理器的請求。
謝謝,如果你能幫助你。
2013-04-06
TAR515
+0
問題是什么? –
2013-04-06 08:13:28
+0
我會實(shí)現(xiàn)服務(wù)器端,但我真的不知道該怎么做,所以問題是:我怎樣才能實(shí)現(xiàn)一個正確的服務(wù)器端,可以服務(wù)于下載管理器的請求。 –
2013-04-06 08:23:50
總結(jié)
以上是生活随笔為你收集整理的android文件下载含服务器端,制作http/https文件共享服务器的Android下载管理器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 理财产品收益率有保障吗?买什么理财产品最
- 下一篇: 计算机组成原理左规右规,计算机组成原理