Скачивание файла(мп3, zip) из приложения Android на телефон, без доступа в интернет

201
19 декабря 2019, 03:20

Моя цель сделать так, чтобы пользователь мог по нажатию кнопки скачать файл из самого приложения. Не из интернета:) В идеале в папку Download. Я уже довольно долго пытаюсь решить эту проблему, так как я новичек в разработке приложений. Ниже код, который я пока что cмог создать:

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
Button button;
private View clicked;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    button = (Button) findViewById(R.id.button);
    button.setOnClickListener(this);
}
public void onClick(View view) {
    clicked = view;
    {gotoact1(clicked); }
}

private   void gotoact1(View view)
{
    switch (view.getId()) {
        case
                R.id.button:
            saveResourceToFile();
            break;
        default:
            break;
    }
}
public void saveResourceToFile() {
    InputStream in = null;
    FileOutputStream fout = null;
    try {
        in = getResources().openRawResource(R.raw.net);
        String downloadsDirectoryPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath();
        String filename = "net.mp3";
        fout = new FileOutputStream(new File(downloadsDirectoryPath + "/" + filename));
        final byte data[] = new byte[1024];
        int count;
        while ((count = in.read(data, 0, 1024)) != -1) {
            fout.write(data, 0, count);
        }
        Toast toast = Toast.makeText(getApplicationContext(),
                "DownloadOne!", Toast.LENGTH_SHORT);
        toast.show();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
        Toast toast = Toast.makeText(getApplicationContext(),
                "DownloadTwo!", Toast.LENGTH_SHORT);
        toast.show();
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (in != null) {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (fout != null) {
            try {
                fout.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}}

При нажатии на кнопку срабатывает Toast с надписью "DownloadTwo". В логах видно, что сработало исключение FileNotFoundException. Может быть кто либо сталкивался с такой проблемой или знает что можно попробовать сделать? Сам файл находится в папке res/raw и называется net.mp3

READ ALSO
Вопрос по TelegramBotsApi

Вопрос по TelegramBotsApi

Пробую сделать бота для телеграм, у меня возник следующий вопросВроде как для создания есть библиотека от телеграмм на Java, в который необходимо...

178
Text View c частотой обновления 1 сек

Text View c частотой обновления 1 сек

Начал программировать на Android недавно, помогитеНа странице приложения есть textView, информацию на котором надо обновлять(показывать значение...

215
<class>.class что значит

<class>.class что значит

IllegalArgumentExceptionclass Что это значить? То есть

216