我试图为我的音乐播放器创建一个简单的文件浏览器,但我无法访问手机的内部存储空间。我已经尝试了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>
我很感激任何建议。
答案 0 :(得分:0)
尝试
getExternalStorageDirectory()
编辑:我刚刚意识到,将清单的权限添加到Android 6+还不够。 您需要在运行时请求权限
ActivityCompat.requestPermissions(MainActivity.this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
1);