我认为java.lang.NullPointerException .in files.length

时间:2018-07-24 20:27:13

标签: java android

请帮助我。我编写此代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        File dir=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
        File[] files=dir.listFiles();
        Toast.makeText(this,files.length+"",Toast.LENGTH_LONG).show();

    }
}

,并且出现此错误:

Caused by: java.lang.NullPointerException
    at ir.itpro.videosample.MainActivity.onCreate(MainActivity.java:20)

我在目录下载中放入了3个文件。

如何立即修复?

2 个答案:

答案 0 :(得分:0)

确保您已添加以下权限:

READ_EXTERNAL_STORAGE

此外,您如何将文件放在该目录中?通过下载管理器还是以编程方式?

答案 1 :(得分:0)

您是否已为清单添加了读取外部存储权限?如果没有,请添加

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

一行。

如果该应用没有权限,则

dir.listFiles()

返回null,因此您在null数组上调用length。

如果targetSdkVersion大于22,则需要处理权限运行时。可以在here中找到有关运行时权限的进一步说明。