Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java &引用;执行doInBackground()时出错;LRX210更新后(Nexus 5)_Java_Android_Runtime Error_Android 5.0 Lollipop - Fatal编程技术网

Java &引用;执行doInBackground()时出错;LRX210更新后(Nexus 5)

Java &引用;执行doInBackground()时出错;LRX210更新后(Nexus 5),java,android,runtime-error,android-5.0-lollipop,Java,Android,Runtime Error,Android 5.0 Lollipop,我只是想知道是否还有其他人有这个问题。 我有两个Nexus5,一个运行5.0LPX13D(开发预览版),另一个运行5.0LRX210(官方版本)。 在我的应用程序中,我从AsyncTasks doInBackground()方法调用了一个方法call getFiles()。 在运行LPX13D的手机上,该功能运行良好,应用程序运行完美。 但是,在运行LRX210的手机上,应用程序在“File[]fileList=directory.listFiles();”行崩溃,出现错误java.lang.R

我只是想知道是否还有其他人有这个问题。 我有两个Nexus5,一个运行5.0LPX13D(开发预览版),另一个运行5.0LRX210(官方版本)。 在我的应用程序中,我从AsyncTasks doInBackground()方法调用了一个方法call getFiles()。 在运行LPX13D的手机上,该功能运行良好,应用程序运行完美。 但是,在运行LRX210的手机上,应用程序在“File[]fileList=directory.listFiles();”行崩溃,出现错误
java.lang.RuntimeException:执行doInBackground()时出错。

这只发生在运行LRX210的手机上。从我看到的情况来看,该方法没有访问UI线程,因此应该可以正常工作。 如果其他任何人有问题,并已找到解决方案,任何帮助将不胜感激

异步任务的完整代码如下所示

提前谢谢 科里:)


下一行中的
文件列表
被计算为
null

File[]fileList=directory.listFiles();
如果我们在Javadoc中检查(请参见:),我们可以看到:

如果此抽象路径名不表示目录,则此方法返回null

因此,我要做的第一件事是调试应用程序并查找以下行:

Environment.getExternalStorageDirectory()+File.separator+Constants.DIRECTORY;

File directory=新文件(directoryName);
File[]fileList=directory.listFiles();
如果路径名正确,则可能有其他原因导致未创建对文件的引用,例如:

  • Environment.getExternalStorageDirectory()
    返回主目录 外部存储目录。此目录当前可能不可用 如果用户已安装,并且已从中删除,则可以访问 设备或其他一些问题已经发生。你可以确定它的 当前状态为
    getExternalStorageState()
  • 在具有多个用户的设备上(如
    UserManager
    所述),每个用户 用户有自己的独立外部存储器。申请只有 为正在运行的用户访问外部存储。在里面 具有多个“外部”存储目录的设备,此目录 表示用户将交互的“主”外部存储 具有可以通过访问辅助存储
  • 最后,写入此路径需要
    WRITE\u EXTERNAL\u存储器
    权限,并且在读访问中启动需要
    读取外部存储
    权限,如果 您拥有写入权限

有关更多信息,请参阅:

您可以发布完整的日志吗?我现在将编辑我的评论。Corey:)上面写的是FileListFragment.java:124上的NPE!
文件[]fileList=directory.listFiles()中的目录可能为空    public class UpdateDataSet extends AsyncTask<List, String, List> {

        @Override
        protected List doInBackground(List... params) {
            getFiles(Environment.getExternalStorageDirectory() + File.separator + Constants.DIRECTORY);
            return null;

        }

        @Override
        protected void onPostExecute(List recordingList) {
            super.onPostExecute(recordingList);
            rAdapter.notifyDataSetChanged();

        }

        public void getFiles(String directoryName){
            File directory = new File(directoryName);
            Log.v("FilesListFragment", "getFiles();");
            File[] fileList = directory.listFiles();

            for(File file: fileList){
                if(file.isFile() && !files.contains(file)){
                    files.add(file);
                }
                /*
                else if(file.isDirectory()){
                    files(file.getAbsoluteFile(), false);
                }
                */
            }
            updateRecordingsList();
        }

        public void updateRecordingsList(){

            for(int i = 0; i < files.size(); i++) {
                boolean fileFound = false;
                for (int j = 0; j < recordingsList.size(); j++) {
                    if (recordingsList.get(j).getFile().equals(files.get(i))) {
                        fileFound = true;
                    }
                }
                if(fileFound != true){
                    recordingsList.add(new Recording(files.get(i), new Date(files.get(i).lastModified())));
                }
            }
            if(rAdapter != null) {
                Log.i("FileListFragment", "notifyDataSetChanged()");
            }
            //Collections.sort(recordingsList);


        }
    }

}
11-13 20:00:19.753    3539-3559/com.bacon.corey.audiotimeshift D/OpenGLRenderer﹕ Render dirty regions requested: true
11-13 20:00:19.762    3539-3539/com.bacon.corey.audiotimeshift D/Atlas﹕ Validating map...
11-13 20:00:19.846    3539-3560/com.bacon.corey.audiotimeshift V/FilesListFragment﹕ getFiles();
11-13 20:00:19.851    3539-3560/com.bacon.corey.audiotimeshift E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
    Process: com.bacon.corey.audiotimeshift, PID: 3539
    java.lang.RuntimeException: An error occured while executing doInBackground()
            at android.os.AsyncTask$3.done(AsyncTask.java:300)
            at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
            at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
            at java.util.concurrent.FutureTask.run(FutureTask.java:242)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:818)
     Caused by: java.lang.NullPointerException: Attempt to get length of null array
            at com.bacon.corey.audiotimeshift.FilesListFragment$UpdateDataSet.getFiles(FilesListFragment.java:124)
            at com.bacon.corey.audiotimeshift.FilesListFragment$UpdateDataSet.doInBackground(FilesListFragment.java:107)
            at com.bacon.corey.audiotimeshift.FilesListFragment$UpdateDataSet.doInBackground(FilesListFragment.java:103)
            at android.os.AsyncTask$2.call(AsyncTask.java:288)
            at java.util.concurrent.FutureTask.run(FutureTask.java:237)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:818)