Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.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
Android 应用程序违反了自我强制严格模式违反_Android_Android Strictmode - Fatal编程技术网

Android 应用程序违反了自我强制严格模式违反

Android 应用程序违反了自我强制严格模式违反,android,android-strictmode,Android,Android Strictmode,我正在应用程序中的SD卡的listview中显示文件。我在异步任务中做这件事。当我在listview中单击一个项目(文件)时,它会出现以下错误 11-28 09:39:40.426 26402-26402/app.comser D/StrictMode﹕ StrictMode policy violation; ~duration=3 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=23 violation=2

我正在应用程序中的SD卡的listview中显示文件。我在异步任务中做这件事。当我在listview中单击一个项目(文件)时,它会出现以下错误

11-28 09:39:40.426  26402-26402/app.comser D/StrictMode﹕ StrictMode policy violation; ~duration=3 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=23 violation=2
            at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1137)
            at libcore.io.BlockGuardOs.stat(BlockGuardOs.java:292)
            at java.io.File.isDirectory(File.java:524)
            at customize.FilesExplorer$2.onItemClick(FilesExplorer.java:120)
            at android.widget.AdapterView.performItemClick(AdapterView.java:300)
            at android.widget.AbsListView.performItemClick(AbsListView.java:1143)
            at android.widget.AbsListView$PerformClick.run(AbsListView.java:3044)
            at android.widget.AbsListView.onTouchUp(AbsListView.java:3845)
            at android.widget.AbsListView.onTouchEvent(AbsListView.java:3617)
            at android.view.View.dispatchTouchEvent(View.java:8393)
我已经添加了异步任务文件代码

 class FilesList_AsyncTask extends AsyncTask<Void,Integer,String>
    {
        File file;
        FilesList_AsyncTask(File file)
        {
            this.file = file;
        }
        @Override
        protected String doInBackground(Void... params)
        {
            System.out.println("-----------" + file);
            File[] filesArray = null;

            filesList=new ArrayList<File>();
            fileNamesList=new ArrayList<String>();

    /*
     * If the selected File is directory and has any files add them to File type of array
    */
            if(file.isDirectory())
            {
                filesArray=file.listFiles();
                selectedFolder=file;
            }

        /*
         * If the File array has any items, add the filenames and files of the items to corresponding arraylist.
         * fileNamesList contains names of files in the folder.
         * filesList contains paths of the files in the folder.
        */
            if(filesArray!=null)
            {
                for (int i = 0; i < filesArray.length; i++)
                {
                    fileNamesList.add(filesArray[i].getName());
                    filesList.add(filesArray[i]);
                    getFileExtension(filesArray[i].getName(),filesArray[i]);
                    // System.out.println("=================="+filesArray[i]);
                }
                Log.d("filenames size...", fileNamesList.size() + "");
                if(fileNamesList.size()>0)
                {
                    filesDialog(fileNamesList, filesList);
                }
                else
                {
                    Toast.makeText(FilesExplorer.this, "No Sub Items Available", Toast.LENGTH_SHORT).show();
                }
            }
            return null;
        }
    }
class FilesList\u AsyncTask扩展了AsyncTask
{
文件;
文件列表\u异步任务(文件)
{
this.file=文件;
}
@凌驾
受保护字符串doInBackground(无效…参数)
{
System.out.println(“--------------”+文件);
File[]filesArray=null;
filesList=newarraylist();
fileNamesList=newarraylist();
/*
*如果选定的文件是目录,并且有任何文件,请将它们添加到数组的文件类型
*/
if(file.isDirectory())
{
filesArray=file.listFiles();
selectedFolder=文件;
}
/*
*如果文件数组有任何项,请将这些项的文件名和文件添加到相应的arraylist中。
*fileNamesList包含文件夹中的文件名。
*文件列表包含文件夹中文件的路径。
*/
if(filesArray!=null)
{
for(int i=0;i0)
{
文件对话框(文件名列表、文件列表);
}
其他的
{
Toast.makeText(fileexplorer.this,“无可用子项”,Toast.LENGTH_SHORT.show();
}
}
返回null;
}
}

提前感谢

如果AsyncTask解决方案不起作用,您可以按如下方式关闭严格模式

 StrictMode.ThreadPolicy old = StrictMode.getThreadPolicy();
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder(old)
    .permitDiskWrites()
    .build());
doCorrectStuffThatWritesToDisk();
StrictMode.setThreadPolicy(old);

看起来您没有正确实现和/或执行AsyncTask。@Mike我已经添加了AsyncTask代码供您参考。您如何执行AsyncTask?实际上,您的
onItemClick监听器中的整个
onItemClick()
方法是什么?谢谢您的回复。doCorrectStuffThatWritesToDisk()方法中的代码是什么?@Mike。我会尝试一下,然后回来。谢谢