首页 > 解决方案 > 当我尝试访问手机的外部存储器时应用程序崩溃

问题描述

我创建了一个简单的应用程序,它尝试访问手机的外部存储文件并将其显示在警报框上,代码如下所示。

btnShowDeviceFolders.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            CharSequence items[];

            final List<String> list = new ArrayList<String>();
            final File path =
                    Environment.getExternalStoragePublicDirectory
                            (
                                    //Environment.DIRECTORY_PICTURES
                                    Environment.DIRECTORY_DCIM
                                    //File.separator +"/"
                            );
            if(!path.exists())
            {
                //path.mkdirs();
             System.out.println("No file found");
            }
            String[] files = path.list();
            if (files.length == 0) {
                //System.out.println("The directory is empty");

            } else {
                for (String aFile : files) {

                    //System.out.println(aFile);
                    list.add(aFile);
                }
            }
            items = files;

            AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
            builder.setTitle("Select Project Folder");
            builder.setItems(items, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int item) {

                    Toast.makeText(getApplicationContext(),list.get(item),Toast.LENGTH_LONG).show();
                                        }
            });
            builder.show();
        }
    });

但是这段代码在模拟器上运行良好,它列出了存在的文件夹,但是当我apk在我的手机上构建和测试它时它崩溃了(我正在使用 android Oreo 进行测试)。Stacktrace 没有给出任何错误 在此处输入图像描述 我能做些什么来克服这个问题。

标签: javaandroiddirectory

解决方案


在 android_manifest.xml 文件中授予外部存储器的权限。


推荐阅读