src/com/android/providers/media/MediaScannerReceiver.java View file @ aa20f4d
... ...
@@ -35,29 +35,27 @@ public class MediaScannerReceiver extends BroadcastReceiver
35 35
public void onReceive(Context context, Intent intent) {
36 36
String action = intent.getAction();
37 37
Uri uri = intent.getData();
38
- String externalStoragePath = Environment.getExternalStorageDirectory().getPath();
39 38
40 39
if (action.equals(Intent.ACTION_BOOT_COMPLETED)) {
41 40
// scan internal storage
42
- scan(context, MediaProvider.INTERNAL_VOLUME);
41
+ scan(context, MediaProvider.INTERNAL_VOLUME, null);
43 42
} else {
44 43
if (uri.getScheme().equals("file")) {
45 44
// handle intents related to external storage
46 45
String path = uri.getPath();
47
- if (action.equals(Intent.ACTION_MEDIA_MOUNTED) &&
48
- externalStoragePath.equals(path)) {
49
- scan(context, MediaProvider.EXTERNAL_VOLUME);
50
- } else if (action.equals(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE) &&
51
- path != null && path.startsWith(externalStoragePath + "/")) {
46
+ if (action.equals(Intent.ACTION_MEDIA_MOUNTED)) {
47
+ scan(context, MediaProvider.EXTERNAL_VOLUME, path);
48
+ } else if (action.equals(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE)) {
52 49
scanFile(context, path);
53 50
}
54 51
}
55 52
}
56 53
}
57 54
58
- private void scan(Context context, String volume) {
55
+ private void scan(Context context, String volume, String path) {
59 56
Bundle args = new Bundle();
60 57
args.putString("volume", volume);
58
+ args.putString("path", path);
61 59
context.startService(
62 60
new Intent(context, MediaScannerService.class).putExtras(args));
63 61
}
src/com/android/providers/media/MediaScannerService.java View file @ aa20f4d
... ...
@@ -256,9 +256,13 @@ public class MediaScannerService extends Service implements Runnable
256 256
};
257 257
}
258 258
else if (MediaProvider.EXTERNAL_VOLUME.equals(volume)) {
259
+ String path = arguments.getString("path");
260
+ if (path == null) {
261
+ path = Environment.getExternalStorageDirectory().getPath();
262
+ }
259 263
// scan external storage
260 264
directories = new String[] {
261
- Environment.getExternalStorageDirectory().getPath(),
265
+ path,
262 266
};
263 267
}