【问题标题】:Deleted file is still showing in my app after clearing storage also清除存储后,已删除的文件仍显示在我的应用程序中
【发布时间】:2019-07-31 18:02:10
【问题描述】:

我正在提取音频文件并在 recyclerview 中显示。 按下删除按钮后,我给出了删除选项,文件从列表和文件管理器中删除,但是当我重新打开应用程序时,音频文件再次出现在回收站视图中的同一位置,但它不播放。

但是当我重新检查文件管理器时,文件不存在,然后我清除了缓存和存储,但文件仍然存在。 所以我重新安装了应用程序,但该文件仍然存在,但您无法播放。

如果您直接从文件管理器中删除该文件,该文件不会立即出现在应用程序中。

val uri = Uri.parse(getSongsList?.get(item.groupId)?.songData)

          val fdelete = File(uri.path)
          if (fdelete.exists()) {
              Log.e("v", "fscsg")

              if (fdelete.delete()) {
                  Log.e("vdv", "fg")
                  System.out.println("file Deleted :${uri.path}")
              } else {
                  Log.e("vd", "fgcs")

                  System.out.println("file not Deleted :${uri.path}")
              }
          }
          Log.i("ld", getSongsList?.get(0)?.songTitle + " " + item.groupId)

          getSongsList?.removeAt(item.groupId)
          _mainScreenAdapter?.notifyDataSetChanged()

那么,当文件不在存储中时,它怎么可能出现在应用程序中。

【问题讨论】:

    标签: android android-studio kotlin android-recyclerview


    【解决方案1】:
    File file = new File(uriOfFile);
    boolean deleted = file.delete();
    
    //delete file from Media Database
    scanaddedFile(file);
    
    private void scanaddedFile(String path) {
    try {
        MediaScannerConnection.scanFile(context, new String[] { path },
                null, new MediaScannerConnection.OnScanCompletedListener() {
                    public void onScanCompleted(String path, Uri uri) {
                        Log.i("ExternalStorage", "Scanned " + path + ":");
                        Log.i("ExternalStorage", "-> uri=" + uri);
                        context.getContentResolver()
                                .delete(uri, null, null);
                    }
                });
    } catch (Exception e) {
        e.printStackTrace();
    }
    
    }
    

    【讨论】:

      【解决方案2】:

      我得到了非常令人沮丧的答案。 有一个媒体数据库,其中包含有关媒体文件的所有信息,因此当我删除文件时,它被删除但仍然在媒体数据库中记录,内容解析器从媒体数据库中获取数据,因此它在应用程序中。 因此,如果我们重新启动手机,那么删除的文件就会从列表中消失,所以每次我们必须删除文件时,我们也必须从数据库记录中删除它。

      仍在寻找如何从媒体数据库中删除。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-25
        相关资源
        最近更新 更多