2010-10-21 40 views
0

好吧,所以我有我的应用程序90%的内置一切正常,但我的下载按钮。我一直坚持这几天,所以如果任何人都可以帮助一个人的东西,将为此工作。我的文件是.pkg,我从xml文件中提供文件名,这里是我的按钮代码,但我不知道我在这里做错了什么。点击它就无能为力。 appUrl是我的xml文件中的文件名下载按钮不起作用请帮忙

Button b_get_book = (Button)v.findViewById(R.id.Button01); 
     b_get_book.setOnClickListener(
       new View.OnClickListener() 
       {    
        public void onClick(View v) { 
         try { 
           File root = Environment.getExternalStorageDirectory(); 
           URL u = new URL("http://www.mysite.com/" + appUrl); 
           HttpURLConnection c = (HttpURLConnection) u.openConnection(); 
           c.setRequestMethod("GET"); 
           c.setDoOutput(true); 
           c.connect(); 
           FileOutputStream f = new FileOutputStream(new File(root, appUrl)); 

           InputStream in = c.getInputStream(); 

           byte[] buffer = new byte[1024]; 
           int len1 = 0; 
           while ((len1 = in.read(buffer)) > 0) { 
            f.write(buffer, 0, len1); 
           } 
           f.close(); 
          } catch (Exception e) { 
           Log.d("Downloader", e.getMessage()); 
          } 
        } 
      }); 

任何帮助将会很棒我一直在为此而拉扯自己的头发。我制作了一个非常复杂的应用程序,以及让我感到轻松的东西......去图。如果任何人都可以帮我解决一个按钮上的一些工作代码,那就太棒了。如果它有下载进度条的话更好。这是我得到实际下载工作后的下一个任务。谢谢

+0

你有什么异常? – Vinay 2010-10-21 06:15:11

+0

你可以尝试在听者的开头记录一些东西,这样你就知道它确实做了任何事情。你也应该考虑不要在UI线程上下载,这会阻止你的应用程序,直到下载完成。 – Flo 2010-10-21 08:01:56

回答

0

第一个想法是,当你尝试创建一个文件时会得到一个IOException。如果我是你,我首先将当前在你的try-catch子句中的代码移到其他地方,然后测试它。然后,当它运行良好时,我会从try-catch中调用它。

此外,我会建议针对在GUI线程中运行如此长的操作 - 这会使您的应用程序无法响应用户输入。以下方法是最值得推荐的:

 public void onClick(View v) { 
      new AsyncTask<Void, Void, Void>() { 
        @Override 
        protected Void doInBackground(Void... params) { 
         try { 
         /* your code here*/ 
         } catch (Exception e) { 
         Log.e("Downloader", e.getMessage()); 
         } 
        } 
       }.execute(); 
     }