我正在使用.net网络服务,我可以在SD卡中下载文件,但我想在特定文件开始下载和完成时显示进度条,然后我想显示视图和取消等选项.
点击事件类:
public void onItemClick(AdapterView<?> parent,View v,int position,long id) { LazyAdapter ca = (LazyAdapter)parent.getAdapter(); FolderList item_name = (FolderList)ca.getItem(position); FolderList DocumentID = (FolderList)ca.getItem(position); FolderList type = (FolderList)ca.getItem(position); Intent mIntent = new Intent(); mIntent.putExtra("item_name",item_name.folder_name); mIntent.putExtra("item_id",DocumentID.ID); mIntent.putExtra("item_type",type.type); mIntent.getStringExtra("item_name"); String Type = mIntent.getStringExtra("item_type"); Log.i("Type",Type); if { // Some code here... } else { Intent i = new Intent(getApplicationContext(),Display_image.class); i.putExtra("item_name",item_name.folder_name); i.putExtra("ID",DocumentID.ID); i.putExtra("item_type",type.type); i.putExtra("User_ID",User_ID); i.getStringExtra("item_name"); Id = i.getStringExtra("ID"); i.getStringExtra("item_type"); startActivity(i); } }
我的代码:我想使用下载管理器
SoapPrimitive DocumentResponse = (SoapPrimitive)Envelope.getResponse(); Log.i("DocumentResponse",DocumentResponse.toString()); String DocAsString = DocumentResponse.toString(); byte[] decodedString = Base64.decode(DocAsString,Base64.DEFAULT); File direct = new File(Environment.getExternalStorageDirectory() + "/MyFolder"); if(!direct.exists()) { direct.mkdir(); } File photo = new File(Environment.getExternalStorageDirectory() + "/MyFolder",Name); if (photo.exists()) { photo.delete(); } try { DownloadManager.Request request = new DownloadManager.Request(Uri.parse(Name)); request.setDescription("Have Fun ;)"); request.setTitle("Downloading..."); // in order for this if to run,you must use the android 3.2 to compile your app if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { request.allowScanningByMediaScanner(); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED); } FileOutputStream fos=new FileOutputStream(photo.getPath()); fos.write(decodedString); fos.close(); DownloadManager manager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); manager.enqueue(request); ContentValues values= new ContentValues(); System.out.println(values); } catch (java.io.IOException e) { Log.e("PictureDemo","Exception in photoCallback",e); } }
请建议如何使用下载管理器?谢谢
解决方法
您可以使用ProgressBar来完成此任务.
首先,在您的界面中添加一个进度条,如下所示:
<ProgressBar android:id="@+id/progress_bar" android:layout_width="wrap_content" android:layout_height="wrap_content" style="@android:style/Widget.ProgressBar.Small"/>
protected ProgressBar mProgressBar; protected long downloadId; protected DownloadManager manager; public void startdownload() { //<SET UP DOWNLOAD MANAGER HERE> downloadId = manager.enqueue(request); mProgressBar = findViewById(R.id.progress_bar); Timer myTimer = new Timer(); myTimer.schedule(new TimerTask() { @Override public void run() { DownloadManager.Query q = new DownloadManager.Query(); q.setFilterById(downloadId); Cursor cursor = manager.query(q); cursor.moveToFirst(); int bytes_downloaded = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR)); int bytes_total = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)); cursor.close(); int dl_progress = (bytesDownloaded * 1f / bytesTotal) * 100; runOnUiThread(new Runnable(){ @Override public void run(){ mProgressbar.setProgress((int) dl_progress); } }); } },10); }