android文件下载含服务器端,制作http/https文件共享服务器的Android下载管理器

我正在使用下载管理器的Android方下载来自不同来源的文件。现在我应该为这个应用程序创建一个服务器端。制作http/https文件共享服务器的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 * 比我可以下载它 *。但我需要访问服务器计算机中的所有文件。 (我认为我应该使用一个servlet,它可以处理下载管理器的请求,并可以以某种方式上传文件,但我不确定它。)Android的下载管理器只能处理HTTP和HTTPS。

我将实现服务器端,但我真的不知道该怎么做,所以问题是:我如何能实现一个合适的服务器端可以服务于该下载管理器的请求。

谢谢,如果你能帮助你。

2013-04-06

TAR515

+0

问题是什么? –

2013-04-06 08:13:28

+0

我会实现服务器端,但我真的不知道该怎么做,所以问题是:我怎样才能实现一个正确的服务器端,可以服务于下载管理器的请求。 –

2013-04-06 08:23:50

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值