Форум программистов, компьютерный форум CyberForum.ru

Не выполняется скачивание файла - программа работает? - Android

Восстановить пароль Регистрация
 
lifeforce
 Аватар для lifeforce
48 / 48 / 10
Регистрация: 27.09.2010
Сообщений: 467
24.06.2015, 17:27     Не выполняется скачивание файла - программа работает? #1
Всем привет!
Мне нужна програмка с кнопками для скачивая файлов на телефон из интернет.
нашел одну статью где пишется что программа рабочая.
создал проэкт вставил содержимое скомпилил заработала, нажал на кнопку - показало что началась загрузка, и только и того.
там было написано что надо в манифест поставить строку для разрешения интернет. поставил. но результата нет.
надеюсь может кто и сталкивался или уже использует это в своей программе.
помогите закончить начатое. мне очень интересно где здесь ошибка.
вот код.
MainActivity.java
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
package com.dropbox.dl.download;
 
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
 
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
 
public class MainActivity extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Button load = new Button(this);
        load.setText("Load file");
        load.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                downloadFile("http://dl.dropbox.com/s/unplki0xa40ql3f/Amplifier.ampl?token_hash=AAFon7ENo62XGixcqLV_s6FZgs0Ir6FnRbafnNzJsEdBeQ&dl=1");
            }
        });
        setContentView(load, new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
    }
 
 
    private void downloadFile(String url) {
        final ProgressDialog progressDialog = new ProgressDialog(this);
 
        new AsyncTask<String, Integer, File>() {
            private Exception m_error = null;
 
            @Override
            protected void onPreExecute() {
                progressDialog.setMessage("Downloading ...");
                progressDialog.setCancelable(false);
                progressDialog.setMax(100);
                progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                progressDialog.show();
            }
 
            @Override
            protected File doInBackground(String... params) {
                URL url;
                HttpURLConnection urlConnection;
                InputStream inputStream;
                int totalSize;
                int downloadedSize;
                byte[] buffer;
                int bufferLength;
 
                File file = null;
                FileOutputStream fos = null;
 
                try {
                    url = new URL(params[0]);
                    urlConnection = (HttpURLConnection) url.openConnection();
 
                    urlConnection.setRequestMethod("GET");
                    urlConnection.setDoOutput(true);
                    urlConnection.connect();
 
                    file = File.createTempFile("Amplifier.amp", "download");
                    fos = new FileOutputStream(file);
                    inputStream = urlConnection.getInputStream();
                    totalSize = urlConnection.getContentLength();
                    downloadedSize = 0;
 
                    buffer = new byte[1024];
                    bufferLength = 0;
 
                    // читаем со входа и пишем в выход,
                    // с каждой итерацией публикуем прогресс
                    while ((bufferLength = inputStream.read(buffer)) > 0) {
                        fos.write(buffer, 0, bufferLength);
                        downloadedSize += bufferLength;
                        publishProgress(downloadedSize, totalSize);
                    }
 
                    fos.close();
                    inputStream.close();
 
                    return file;
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                    m_error = e;
                } catch (IOException e) {
                    e.printStackTrace();
                    m_error = e;
                }
 
                return null;
            }
 
            // обновляем progressDialog
            protected void onProgressUpdate(Integer... values) {
                progressDialog.setProgress((int) ((values[0] / (float) values[1]) * 100));
            };
 
            @Override
            protected void onPostExecute(File file) {
                // отображаем сообщение, если возникла ошибка
                if (m_error != null) {
                    m_error.printStackTrace();
                    return;
                }
                // закрываем прогресс и удаляем временный файл
                progressDialog.hide();
                file.delete();
            }
        }.execute(url);
    }
}
и сам манифест

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.dropbox.dl.download" >
 
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
 
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
 
    <!-- Internet Permissions -->
    <uses-permission android:name="android.permission.INTERNET" />
 
    <!-- Network State Permissions -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 
    <!-- Access Location -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
 
 
</manifest>
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2015, 17:27     Не выполняется скачивание файла - программа работает?
Посмотрите здесь:

Android Программа не работает на реальном телефоне
Скачивание файла Android
Android Не выполняется поиск в ListView
Android Скачивание документа с сервера
Android Организовать скачивание по URL, отображая картинки и текст
Android Не идет скачивание файлов через приложение
Создание файла, запись в файл - не работает код Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikalai
248 / 224 / 91
Регистрация: 11.01.2015
Сообщений: 643
25.06.2015, 00:58     Не выполняется скачивание файла - программа работает? #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
lifeforce, вот так работает:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
 
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
 
public class MainActivity extends Activity {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Button load = new Button(this);
        load.setText("Load file");
        load.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                downloadFile("http://dl.dropbox.com/s/unplki0xa40ql3f/Amplifier.ampl?token_hash=AAFon7ENo62XGixcqLV_s6FZgs0Ir6FnRbafnNzJsEdBeQ&dl=1");
            }
        });
        setContentView(load, new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
    }
 
 
    private void downloadFile(String url) {
        final Context context = this.getApplicationContext();
        final ProgressDialog progressDialog = new ProgressDialog(this);
 
        new AsyncTask<String, Integer, File>() {
            private Exception m_error = null;
 
            @Override
            protected void onPreExecute() {
                progressDialog.setMessage("Downloading ...");
                progressDialog.setCancelable(false);
                progressDialog.setMax(100);
                progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                progressDialog.show();
            }
 
            @Override
            protected File doInBackground(String... params) {
 
                URL url;
                HttpURLConnection urlConnection;
                InputStream inputStream;
                int totalSize;
                int downloadedSize;
                byte[] buffer;
                int bufferLength;
 
                File file = null;
                FileOutputStream fos = null;
 
                try {
                    url = new URL(params[0]);
                    urlConnection = (HttpURLConnection) url.openConnection();
 
                    urlConnection.setRequestMethod("GET");
                    urlConnection.setDoOutput(true);
                    urlConnection.connect();
                    file = File.createTempFile("Amplifier", "ampl", context.getCacheDir());
                    fos = new FileOutputStream(file);
                    inputStream = urlConnection.getInputStream();
                    totalSize = urlConnection.getContentLength();
                    downloadedSize = 0;
                    buffer = new byte[1024];
                    bufferLength = 0;
                    // читаем со входа и пишем в выход,
                    // с каждой итерацией публикуем прогресс
                    while ((bufferLength = inputStream.read(buffer)) > 0) {
                        fos.write(buffer, 0, bufferLength);
                        downloadedSize += bufferLength;
                        publishProgress(downloadedSize, totalSize);
                    }
                    fos.close();
                    inputStream.close();
 
                    return file;
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                    m_error = e;
                } catch (IOException e) {
                    e.printStackTrace();
                    m_error = e;
                }
 
                return null;
            }
 
            // обновляем progressDialog
            protected void onProgressUpdate(Integer... values) {
                progressDialog.setProgress((int) ((values[0] / (float) values[1]) * 100));
            };
 
            @Override
            protected void onPostExecute(File file) {
                // отображаем сообщение, если возникла ошибка
                if (m_error != null) {
                    m_error.printStackTrace();
                    return;
                }
                // закрываем прогресс и удаляем временный файл
                progressDialog.hide();
                file.delete();
            }
        }.execute(url);
    }
}
вот это в манифесте лишнее:

XML
1
2
3
4
5
<!-- Network State Permissions -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 
    <!-- Access Location -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
lifeforce
 Аватар для lifeforce
48 / 48 / 10
Регистрация: 27.09.2010
Сообщений: 467
25.06.2015, 08:13  [ТС]     Не выполняется скачивание файла - программа работает? #3
Mikalai,
огромное спасибо!
все работает!
теперь нодо будет создать для трех кнопок и указать место на карту памяти. если у меня не получиться - отпишусь.
lifeforce
 Аватар для lifeforce
48 / 48 / 10
Регистрация: 27.09.2010
Сообщений: 467
26.06.2015, 21:30  [ТС]     Не выполняется скачивание файла - программа работает? #4
Mikalai,
я ничего не могу понять.
вроде процесс загрузки идет , но ничего не происходит.
как указать папку для записи файла?
пробовал поставить линк 15 мегабайт файл а он его заканчивает за 3 сек?
Mikalai
248 / 224 / 91
Регистрация: 11.01.2015
Сообщений: 643
27.06.2015, 02:46     Не выполняется скачивание файла - программа работает? #5
Ну что тут скажешь ... мы живём в эпоху высокоскоростного интернета )))
lifeforce
 Аватар для lifeforce
48 / 48 / 10
Регистрация: 27.09.2010
Сообщений: 467
27.06.2015, 10:53  [ТС]     Не выполняется скачивание файла - программа работает? #6
Цитата Сообщение от Mikalai Посмотреть сообщение
Ну что тут скажешь ... мы живём в эпоху высокоскоростного интернета )))
да, уж точно!

ну а если серьезно - я заметил что если убрать
Java
1
?token_hash=AAFon7ENo62XGixcqLV_s6FZgs0Ir6FnRbafnNzJsEdBeQ&dl=1
эту часть линка то загрузка идет. но не всегда . при повторном нажатии сразу заканчивает процесс.
и еще как мне перекинуть файл на СД карту?

Добавлено через 1 час 47 минут
еще нашел скачивание файла через downloadmanager , и тоже компилируется без ошибок запускаешь ,нажимаю на кнопку но ничего не происходит. я скопировал код с ютуба. может чего и пропустил. а может он еще и пользует какойто класс ? а на видео не показал его! вот код. этот код больше меня устраивает , там можно организовать несколько кнопок , и есть папка назначения куда сохраняются файлы.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import android.app.DownloadManager;
import android.app.Fragment;
import android.content.Context;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.MimeTypeMap;
import android.webkit.URLUtil;
import android.widget.Button;
import android.widget.Toast;
 
 
public class MainActivity extends ActionBarActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
          //if(savedInstanceState == null)
          //    getSupportFragmentManager().beginTransaction().add(R.id.container, new PlaceholderFragment()).commit();
 
    }
 
    public static class PlaceholderFragment extends Fragment {
        String myHTTPUrl = "http://www.rarlab.com/rar/winrar-x64-420.exe";
        public PlaceholderFragment(){
 
        }
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
            View rootView = inflater.inflate(R.layout.fragment_main,container,false);
 
            //
 
            Button btnDM;
            btnDM = (Button)rootView.findViewById(R.id.btnDM);
            btnDM.setOnClickListener(new View.OnClickListener() {
 
 
                @Override
                public void onClick(View v) {
 
                    DownloadManager.Request request =  new DownloadManager.Request(Uri.parse(myHTTPUrl));
                    request.setTitle("File Download.");
                    request.setDescription("File ie being downloaded....");
 
                    request.allowScanningByMediaScanner();
                    request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
                    String nameOffile = URLUtil.guessFileName(myHTTPUrl, null,
                            MimeTypeMap.getFileExtensionFromUrl(myHTTPUrl));
                    request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, nameOffile);
                    DownloadManager manager = (DownloadManager)getActivity().getSystemService(Context.DOWNLOAD_SERVICE);
                    manager.enqueue(request);
 
                }
            });
            //
            return rootView;
        }
 
        public class MyTask extends AsyncTask<Void, Void, Void>
        {
            @Override
            protected Void doInBackground(Void... params){
                return null;
            }
            @Override
            protected void onPostExecute(Void result){
                super.onPostExecute(result);
                Toast.makeText(getActivity(), "Completed", Toast.LENGTH_SHORT).show();
            }
 
        }
    }
 
}
если кто использовал downloadmanager может найдете ошибку или исправите код.
Mikalai
248 / 224 / 91
Регистрация: 11.01.2015
Сообщений: 643
27.06.2015, 12:23     Не выполняется скачивание файла - программа работает? #7
Вот тут почитай про SD-карты
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.08.2016, 00:19     Не выполняется скачивание файла - программа работает?
Еще ссылки по теме:

Android Не выполняется условие if
Скачивание приложения - в какой раздел? Android
Скачивание картинки из интернета в заданном разрешении Android
Android Не работает обработчик выбора файла
Скачивание текста с применением логина и пароля Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
naven
1 / 1 / 0
Регистрация: 18.11.2015
Сообщений: 70
17.08.2016, 00:19     Не выполняется скачивание файла - программа работает? #8
Цитата Сообщение от lifeforce Посмотреть сообщение
вроде процесс загрузки идет , но ничего не происходит.
Цитата Сообщение от Mikalai Посмотреть сообщение
urlConnection.setDoOutput(true);
должно быть так:
Цитата Сообщение от Mikalai Посмотреть сообщение
urlConnection.setDoOutput(false);
Yandex
Объявления
17.08.2016, 00:19     Не выполняется скачивание файла - программа работает?
Ответ Создать тему
Опции темы

Текущее время: 07:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru