解决方案 »

  1.   

    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
    代码.....
    }
    把代码放到里面试下
      

  2.   

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

    File f=Environment.getExternalStorageDirectory();
    Log.d("MSG", "absolute path "+ f.getAbsolutePath());
    Log.d("MSG", "is dir "+ f.isDirectory());
    Log.d("MSG", "canRead  "+ f.canRead());
    Log.d("MSG", "canWrite "+ f.canWrite());

    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
     Log.d("MSG", "Environment.MEDIA_MOUNTED");
    }

    String[]  fileNames=  f.list();
    Log.d("MSG", fileNames==null?"fileNames is null":"fileNames is not null");
    for(String string:fileNames){
    Log.d("MSG", "file -- "+string);
    }

    } "Environment.MEDIA_MOUNTED"仍然是null pointer
      

  3.   

    进了if语句,并且log打印了 "Environment.MEDIA_MOUNTED", 下面list还是null
      

  4.   


    代码在我的手机和平板上运行,都是正常的。没有null.
      

  5.   

    4.4 列sd卡根目录我也遇到这个问题了,返回的list为null。
    暂时还不清楚,楼主可以试试列子目录看看能不能列出来。
      

  6.   

    listFiles() 在4.4上也有null的问题,在4.2上没有问题。
    暂时原因不明。
      

  7.   


    刚才试了下列dcim目录也列不了。。
    用的这个返回的file。
    Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
      

  8.   

    我能弱弱说一句,请看下api,4.4的变化里面有讲到对sdcard读写的变化
      

  9.   


    需要的权限
    <permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
        <permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        我在androidmanifest里面都声明了啊
      

  10.   

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>你权限加错了,是加这个