android-studio - 我正在制作音乐播放器,我想让应用程序读取存储空间以获取歌曲
问题描述
我已经在 Manifest 中给出了 READ_EXTERNAL_STORAGE,但应用程序仍然无法读取存储空间并在列表视图中显示歌曲。我在 xml 中添加了一个列表视图。我不知道问题出在代码还是设备上。我对android工作室很陌生。请帮忙
public class MainActivity extends AppCompatActivity {
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.listView);
Dexter.withContext(this)
.withPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
.withListener(new PermissionListener() {
@Override
public void onPermissionGranted(PermissionGrantedResponse permissionGrantedResponse) {
// Toast.makeText(MainActivity.this, "Runtime permission given", Toast.LENGTH_SHORT).show();
display();
}
@Override
public void onPermissionDenied(PermissionDeniedResponse permissionDeniedResponse) {
}
@Override
public void onPermissionRationaleShouldBeShown(PermissionRequest permissionRequest, PermissionToken permissionToken) {
permissionToken.continuePermissionRequest();
}
})
.check();
}
public ArrayList<File> fetchSongs(File file){
ArrayList<File> arrayList = new ArrayList<>();
File [] songs = file.listFiles();
if(songs !=null){
for(File myFile: songs){
if(!myFile.isHidden() && myFile.isDirectory()){
arrayList.addAll(fetchSongs(myFile));
}
else{
if(myFile.getName().endsWith(".mp3") && !myFile.getName().startsWith(".")){
arrayList.add(myFile);
}
}
}
}
return arrayList;
}
void display(){
ArrayList<File> mySongs = fetchSongs(Environment.getExternalStorageDirectory());
String[] items = new String[mySongs.size()];
for(int i=0;i<mySongs.size();i++){
items[i] = mySongs.get(i).getName().replace(".mp3", "");
}
ArrayAdapter<String> ad = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,items);
listView.setAdapter(ad);
}
}
解决方案
推荐阅读
- python - 为什么这个函数返回的值与它打印的不同?
- php - 如何将 PHP 变量写为 HTML 属性值?
- python - 需要了解代码中 [::-1] 的用途是什么?
- svg - 如何获取里面一个角色的风格
- python - 如何在 Tensorflow 中创建自定义图像数据集
- python - 通过 pandas 操作访问特定组中的组
- java - 如何将 Or 标准与限制列表一起使用
- python - 如何将不规则的时间序列重新采样为每日频率并跨越到今天?
- api - 如何在获取成功响应中呈现 react-native 组件?
- python - datetime 与 date 的时间差为 0 秒