我有两个活动:在第一个活动中,我将字符串“pathName”传递给第二个活动。我收到额外的好,我可以从这个路径名创建一个文件。当我尝试从该文件调用.listFiles()时出现问题。
代码: 第一项活动
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
String pathToSend = albumDirectory+albumList.get(position);
Intent i = new Intent(getBaseContext(),GalleryImageSlider.class);
i.putExtra("pathName", pathToSend);
startActivity(i);
}
第二项活动:
List<File> imageList;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_capture_gallery);
Intent i = getIntent();
filePath = i.getExtras().getString("pathName");
albumFile = new File(filePath);
Log.d("Fragment","File Path: " + albumFile.getAbsolutePath());
//I can see this directory on my tablet, and I can see the files within. So the file
path is correct
try{
imageList = Arrays.asList(albumFile.listFiles());
}
catch(NullPointerException e){
Log.e("Error", "NPE: " + e);
}
据我所知,如果没有要读取的文件,.listFiles会返回null。但是有文件,当我查看我的平板电脑文件管理器时,我可以看到它们。
有人看到解决这个问题的方法吗?先谢谢。
答案 0 :(得分:2)
问题可能是因为路径不是目录,或者您没有权限读取它。以下是在致电listFiles()
之前应验证的一些方法提示:
file.canRead()
- 返回一个bool,说明文件是否可读。file.isDirectory()
- 返回一个bool,说明文件是否是目录。既然你说路径是正确的,可能第二个选项不是解决方案,但第一个选项可能是。
答案 1 :(得分:0)
你可能错过了PERMISSON这样做,listFiles()
返回null是某些情况,例如找不到目录,或者你没有访问该目录的权限。在AndroidManifest.xml中检查您的PERMISSION。您是否添加了READ_EXTERNAL_STORAGE
以获得许可?希望这会有所帮助。
答案 2 :(得分:0)
当您将设备连接到PC时,SD卡已被删除,您无法访问文件。