Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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 lstat失败:设备或资源繁忙-清除应用程序上的数据后无法创建包文件夹_Android - Fatal编程技术网

Android lstat失败:设备或资源繁忙-清除应用程序上的数据后无法创建包文件夹

Android lstat失败:设备或资源繁忙-清除应用程序上的数据后无法创建包文件夹,android,Android,场景:运行我的应用程序一次后,我进入设置->应用程序->应用程序并单击清除数据。再次尝试运行应用程序时,无法恢复应用程序正常运行所需的一些文件。对context.getExternalFilesDir(null)的调用返回一个null指针。尝试使用null指针创建文件时,会尝试在根文件夹(即:“\myFileName.txt”)中创建文件,而根文件夹不是我希望文件进入的位置,也是系统的只读部分 在看了这里的许多问题后,我可以略过这些 这不是权限问题,如果我不清除数据,我可以写文件,直到我的心满

场景:运行我的应用程序一次后,我进入设置->应用程序->应用程序并单击清除数据。再次尝试运行应用程序时,无法恢复应用程序正常运行所需的一些文件。对context.getExternalFilesDir(null)的调用返回一个null指针。尝试使用null指针创建文件时,会尝试在根文件夹(即:“\myFileName.txt”)中创建文件,而根文件夹不是我希望文件进入的位置,也是系统的只读部分

在看了这里的许多问题后,我可以略过这些

  • 这不是权限问题,如果我不清除数据,我可以写文件,直到我的心满足
  • 这似乎也不是一个“我们留下了对文件的锁定或引用”的问题,因为文件夹不存在,我没有收到LSAT错误,lsof没有列出任何文件,即使我不能在我的包名下查看链接
当我第二次启动应用程序时,由于空指针,它无法写入文件,系统处于损坏状态,只有设备重置才能修复。如果我在Android文件浏览器中浏览到Android/data文件夹,我会看到一个名为“com.myapps.packag”的文件,而不是文件夹。但是它没有相关的信息(它显示为一个?图标,大小为0.00B,-rw表示它的统计数据,没有创建/更新日期。在我看来,这像是一个空的默认信息)

如果我通过ADB shell access浏览文件夹,并对数据文件夹执行ls-al操作,则标题中会出现错误:

lstat 'com.myapps.package' failed: Device or resource busy
就这样

lsof报告包名称下没有任何文件打开。尝试扫描文件列表似乎毫无用处,因为大多数文件都无法解析(我的设备没有根目录,因此无法获得根目录访问权限,使其正确显示信息)

基本上,我已经完成了我可以在这里找到的东西,并通过谷歌尝试,看看为什么第二次运行的应用程序似乎无法创建其包文件夹


哦,如果有关系的话,我正在使用Android OS 4.2.2(API 17)

你能使用Environment.getExternalStorageState()检查媒体的状态吗 然后,您可以了解应用程序与外部存储的当前连接状态

Returns the current state of the primary "external" storage device.
Returns

one of MEDIA_UNKNOWN, MEDIA_REMOVED, MEDIA_UNMOUNTED, MEDIA_CHECKING, MEDIA_NOFS, MEDIA_MOUNTED, MEDIA_MOUNTED_READ_ONLY, MEDIA_SHARED, MEDIA_BAD_REMOVAL, or MEDIA_UNMOUNTABLE. 

在两种状态(好和坏)下,getExternalStorageState()报告“已装入”作为其状态。这个问题似乎只与应用程序的文件夹有关,而不是与设备本身有关。谢谢你。