无法获取内部存储文件列表

时间:2018-06-05 21:52:24

标签: android

我试图为我的音乐播放器创建一个简单的文件浏览器,但我无法访问手机的内部存储空间。我已经尝试了getFileDir() - 它没有返回任何内容而Environment.getExternalStorageDirectory()崩溃整个应用程序,有趣的是只有Environment.getRootDirectory()正常工作但这不是我需要的。我将整个File个对象发送到RecyclerViewAdapter,这对我提到的getRootDirectory有效。

主要活动:

public class MainActivity extends AppCompatActivity {

private File mFile;
private ArrayList<File> mList = new ArrayList<File>();
private RecyclerView mRecycleView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayout;
private static final String TAG = "MainActivity";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    String path= getFilesDir().getAbsolutePath();
    mFile = new File(path);
    for(File file : mFile.listFiles()){
        mList.add(file);
    }

    mRecycleView = findViewById(R.id.RecycledView);
    mRecycleView.setHasFixedSize(true);
    mLayout = new LinearLayoutManager(this);
    mRecycleView.setLayoutManager(mLayout);
    mAdapter = new RecycleViewAdapter(this,mList);
    mRecycleView.setAdapter(mAdapter);
}

我的权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>

我很感激任何建议。

1 个答案:

答案 0 :(得分:0)

尝试

getExternalStorageDirectory()

编辑:我刚刚意识到,将清单的权限添加到Android 6+还不够。 您需要在运行时请求权限

ActivityCompat.requestPermissions(MainActivity.this,
                new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                1);