【发布时间】:2018-09-15 08:38:42
【问题描述】:
我的应用程序从服务器下载 mp3 文件并放入我的内部存储 (/storage/emulated/0) 的下载文件夹中。现在我面临的问题是我无法读取文件并将它们显示在 recyclerview 中。几天来我一直在尝试访问该文件夹,但没有运气。
我的 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 文件。我正在做一个现场项目,我很挣扎。
【问题讨论】:
标签: php android android-volley