Android Скачать файл по ссылке

После того, как я реализовал решение для приложения Android для публикации на веб-сервере и проверки заказа Google, затем выдайте ссылку для загрузки. Теперь я пытаюсь работать над кодом для приложения, чтобы прочитать ссылку со страницыthankyou.php.

<a href="http://domain.com/218348214.dat">Download File</a>

Файл имеет расширение «.DAT» и поступает по определенной ссылке. Приложение должно получить ссылку на новой странице и позволить клиенту загрузить файл.

введите здесь описание изображения


person WiTon Nope    schedule 16.02.2016    source источник


Ответы (1)


Внутри файла манифеста вам нужно добавить фильтр намерений:

    <activity
        android:name="Downloader">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />

            <data
                android:host="domain.com"
                android:scheme="http" />
        </intent-filter>
    </activity>

Затем внутри вашей активности «Загрузить» onCreate:

public class Download extends Activity {

private String filename;

@Override
protected void onCreate (final Bundle savedInstanceState) {
    super.onCreate (savedInstanceState);
    setContentView(<your layout file>);
    final Intent intent = getIntent ();
    final Uri data = intent.getData ();
    if (data != null) {
        final List<String> pathSegments = data.getPathSegments ();
        fileName = pathSegments.get (pathSegments.size () - 1);
    }
}

Затем в обработчике кликов для кнопки загрузки вы можете использовать намерение просмотра, чтобы действовать как ссылка в android.

button.setOnClickListener (new View.OnClickListener () {
        @Override public void onClick (final View v) {
            Uri intentUri = Uri.parse("http://domain.com/" + filename);

            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.setData(intentUri);
            startActivity(intent);
        }
    });
person Cory Roy    schedule 16.02.2016
comment
спасибо за информацию, но 1 вещь по-прежнему отсутствует: имя файла - это переменная, которая генерируется на основе информации о заказе, поэтому имя файла не является статичным, используя ваш код. Мне все еще нужно получить имя файла, а затем попросить пользователя загрузить. - person WiTon Nope; 16.02.2016
comment
Обновлен ответ с большим количеством частей теперь, когда я лучше понимаю вашу проблему. - person Cory Roy; 16.02.2016
comment
Большое спасибо за то, что вы уверены, во-первых, возможно ли удержать пользователя внутри приложения и инициировать загрузку оттуда, а не вытаскивать его в веб-браузер, чтобы завершить свое действие? - person WiTon Nope; 16.02.2016
comment
да. Вы можете сделать это. См.: stackoverflow.com/questions /15758856/ - person Cory Roy; 16.02.2016
comment
спасибо за акцию. Ваш ответ полезен, однако приложение вылетает и выходит из строя. - person WiTon Nope; 16.02.2016
comment
Давайте продолжим это обсуждение в чате. - person Cory Roy; 16.02.2016