問題描述:文件從內部存儲空間拷貝到外部SD卡時,連接PC選擇Transfer files 模式,如果不重啓機器剛剛copy過來的文件不能在PC上的目錄中發現
解決方法:
- Android 4.4以前,我们可以使用Intent.ACTION_MEDIA_MOUNTED,让Android系统重新扫描一遍SD卡,这样PC就能同步文件管理器的操作了。
- Android 4.4以后,google可能是发现了每次调用这个intent都会重新扫描SD卡,非常耗费系统资源,所以禁止非系统应用使用这个intent了。
- 需要修改android/packages/providers/MediaProvider/src/com/android/providers/media/MediaScannerReceiver.java增加scan SD卡的方法,具體代碼如下:
leif@leif:~/Git/Arashi9500/LA.UM.6.2/LINUX/android/packages/providers/MediaProvider$ git diff diff --git a/AndroidManifest.xml b/AndroidManifest.xml index b4c9e64..6082245 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -54,6 +54,9 @@ <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> <intent-filter> + <action android:name="android.hardware.usb.action.USB_STATE" /> + </intent-filter> + <intent-filter> <action android:name="android.intent.action.MEDIA_MOUNTED" /> <data android:scheme="file" /> </intent-filter> diff --git a/src/com/android/providers/media/MediaScannerReceiver.java b/src/com/android/providers/media/MediaScannerReceiver.java index 8a098af..2de593b 100644 --- a/src/com/android/providers/media/MediaScannerReceiver.java +++ b/src/com/android/providers/media/MediaScannerReceiver.java @@ -24,6 +24,7 @@ import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.util.Log; +import android.hardware.usb.UsbManager; import java.io.File; import java.io.IOException; @@ -38,6 +39,14 @@ public class MediaScannerReceiver extends BroadcastReceiver { if (Intent.ACTION_BOOT_COMPLETED.equals(action)) { // Scan internal only. scan(context, MediaProvider.INTERNAL_VOLUME); + } else if (UsbManager.ACTION_USB_STATE.equals(action)) { + Bundle extras = intent.getExtras(); + boolean connected = extras.getBoolean(UsbManager.USB_CONFIGURED); + if (connected) { + // Scan both internal and external storage + scan(context, MediaProvider.INTERNAL_VOLUME); + scan(context, MediaProvider.EXTERNAL_VOLUME); + } } else { if (uri.getScheme().equals("file")) { // handle intents related to external storage
相关推荐
该项目是一款基于freeRTOS操作系统和STM32F103x微控制器的手机远程控制浴室温度系统设计源码,共包含1087个文件,包括580个C语言源文件、269个头文件、45个汇编源文件、36个数据文件、36个目标文件、35个编译规则文件、28个包含文件、27个文本文件、6个源文件、3个归档文件。此系统通过手机远程实现对浴室温度的有效控制,适用于智能浴室环境管理。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。