【问题标题】:how to toggle .nomedia file programmatically如何以编程方式切换 .nomedia 文件
【发布时间】:2015-05-09 00:04:53
【问题描述】:

我正在创建一个应用程序来显示和隐藏位于 /viber/media/ 中的 Viber 应用程序的“Viber 图像”文件夹。我知道我应该在该文件夹中删除并创建 .nomedia 文件,然后强制媒体扫描仪对其进行扫描。

当我发送广播或静态使用 MediaScannerConnection 重新扫描该文件夹时,画廊需要四分之一以上的时间来更新该文件夹。

我试过了:

    String dir = Environment.getExternalStorageDirectory().getAbsolutePath()+"/viber/media/Viber Images/";
    File f = new File(dir);
    Uri uri = Uri.fromFile(f);
    Intent in = new Intent(Intent.ACTION_MEDIA_MOUNTED,uri);
    sendBroadcast(in);

但它没有更新媒体扫描仪,因为文件夹正在画廊中显示。

我也试过了:

    MediaScannerConnection.scanFile(MainActivity.this, new String[{"/storage/sdcard0/viber/media/Viber Images/"}, null, new MediaScannerConnection.OnScanCompletedListener() {

        public void onScanCompleted(String path, Uri uri) {
            Log.d("file",path+" scanned");
            Log.d("url","uri = "+uri);

        }

    });

logcat 显示:

03-07 15:42:10.180: D/MediaScannerConnection(15267): Connected to MediaScanner
03-07 15:42:10.180: D/MediaScannerConnection(15267): Scanning file 7klwibgf7kdcbid(7mrafi7vfdrb7
03-07 15:42:10.670: D/file(15267): /storage/sdcard0/viber/media/Viber Images/ scanned
03-07 15:42:10.670: D/url(15267): uri = content://media/external/file/130512
03-07 15:42:10.670: D/MediaScannerConnection(15267): Disconnecting from MediaScanner

它似乎正在更新媒体扫描仪数据库,但无法影响图库应用更新其内容。 Playstore 中有一个名为 nomedia 的免费应用程序,它完全符合我在手机中的要求,但我的代码不起作用。

是否有任何方法或内置类可以做到这一点?或者有什么方法可以通过编程方式做到这一点?

抱歉我的英语不好。

任何答案表示赞赏。

【问题讨论】:

    标签: android android-mediascanner


    【解决方案1】:

    首先重命名文件夹。然后从媒体数据库中删除文件夹数据。然后重命名文件夹。力扫描仪扫描它...

    【讨论】:

      猜你喜欢
      • 2011-07-13
      • 1970-01-01
      • 2012-06-20
      • 2019-07-21
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多