如何以编程方式切换.nomedia文件

时间:2015-03-07 12:20:04

标签: android android-mediascanner

我正在创建一个应用程序来显示和隐藏位于/ viber / media /中的Viber App的“Viber Images”文件夹。我知道我应该在该文件夹中删除并创建.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的免费应用程序,它在我的手机中完全符合我的要求但是我的代码无效。

是否有任何方法或内置类可以这样做?或者有任何方式以编程方式这样做吗?

抱歉我的英语不好。

任何回答都表示赞赏。

1 个答案:

答案 0 :(得分:0)

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