2

我有两个活动:在第一个活动中,我将字符串“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 。但是有文件,当我查看我的平板电脑文件管理器时,我可以看到它们。

有人看到解决这个问题的方法吗?先谢谢了。

4

3 回答 3

2

也许问题是因为路径不是目录,或者您没有读取它的权限。以下是您在调用之前应验证的一些方法提示listFiles()

  1. file.canRead()- 返回一个布尔值,说明文件是否可读。
  2. file.isDirectory()- 返回一个布尔值,说明文件是否为目录。

既然你说路径是正确的,可能第二个选项不是解决方案,但第一个可以。

于 2013-08-09T06:15:01.403 回答
0

当您将设备连接到 PC 时,sd 卡被移除,您无法访问文件。

于 2013-08-09T12:43:29.117 回答
0

您可能错过了这样做的许可,listFiles()返回 null 是在某些情况下,例如找不到目录或您没有访问该目录的权限。在 AndroidManifest.xml 中检查您的许可。您是否添加READ_EXTERNAL_STORAGE了权限?希望这可以帮助。

于 2013-08-09T05:48:54.780 回答