Мое приложение загружает файлы mp3 с сервера и помещает в папку загрузок моего внутреннего хранилища (/ storage / emulated / 0). Теперь проблема, с которой я сталкиваюсь, заключается в том, что я не могу читать файлы и отображать их в окне повторного использования. Уже давно я пытаюсь получить доступ к папке, но не повезло.
Мой файл MainActivity.java
public class MainActivity extends AppCompatActivity {
private static final String URL = "http://myurl.com/mylanguage/a_displays.php";
private RecyclerView recyclerView;
private RecyclerView.Adapter adapter;
private List<Radio> radioList;
ProgressDialog progressDialog;
long queueid;
DownloadManager dm;
private MediaPlayer mediaplayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
radioList = new ArrayList<>();
mediaplayer = new MediaPlayer();
adapter = new RadioAdapter(radioList,this);
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (DownloadManager.ACTION_DOWNLOAD_COMPLETE.equals(action)) {
DownloadManager.Query req_query = new DownloadManager.Query();
req_query.setFilterById(queueid);
Cursor c = dm.query(req_query);
if (c.moveToFirst()) {
int columnIndex = c.getColumnIndex(DownloadManager.COLUMN_STATUS);
if (DownloadManager.STATUS_SUCCESSFUL == c.getInt(columnIndex)) {
String uriString= c.getString(c.getColumnIndex(DownloadManager.COLUMN_LOCAL_URI));
String path = Environment.DIRECTORY_DOWNLOADS;
String path1 = getFilesDir()
+ File.separator + path + File.separator;
Log.d("PathFile", path1);
File dir = Environment.getExternalStorageDirectory();
String pather = dir.getAbsolutePath();
Log.d("Pather", String.valueOf(pather));
final File folder = Environment.getExternalStorageDirectory() ;
Log.d("asd", String.valueOf(folder));
listFilesForFolder(folder);
adapter.notifyDataSetChanged();
}
}
}
}
};
registerReceiver(receiver,new IntentFilter((DownloadManager.ACTION_DOWNLOAD_COMPLETE)));
String codeValue = getIntent().getStringExtra("CODEINTENT");
datadummy(codeValue);
recyclerView.setAdapter(adapter);
}
public void listFilesForFolder(final File folder) {
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
listFilesForFolder(fileEntry);
} else {
System.out.println(fileEntry.getName());
}
}
}
public void datadummy(final String codeVal) {
StringRequest stringRequest = new StringRequest(Request.Method.POST,URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response){
try {
JSONArray array = new JSONArray(response);
for (int i = 0; i < array.length(); i++) {
Log.d("MusicName", String.valueOf(array.getJSONObject(i).getString("audio_sound")));
final String music_uri = "http://myurl.com/mylanguage/" + array.getJSONObject(i).getString("audio_sound");
Uri uri = Uri.parse(music_uri);
dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
DownloadManager.Request request = new DownloadManager.Request(uri);
String.valueOf(request.setDestinationInExternalFilesDir(MainActivity.this,
Environment.DIRECTORY_DOWNLOADS,
String.valueOf(array.getJSONObject(i).getString("audio_sound"))));
queueid = dm.enqueue(request);
}
Log.d("-response",response);
}catch (JSONException e){
e.printStackTrace();
Log.d("Main", "JsonException: " + e);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("album_code", codeVal);
return params;
}
};
RequestQueue requestqueue = Volley.newRequestQueue(this);
requestqueue.add(stringRequest);
}
}
Я перепробовал почти все способы. Затем мне нужно воспроизвести эти mp3-файлы. Я работаю над живым проектом и много борюсь.