Моя цель сделать так, чтобы пользователь мог по нажатию кнопки скачать файл из самого приложения. Не из интернета:) В идеале в папку 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
Продвижение своими сайтами как стратегия роста и независимости