`
Leif_冬
  • 浏览: 44676 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

android 從內部存儲空間Copy 文件到外部SD卡連接PC能及時發現文件(Transfer files 模式)

阅读更多

問題描述:文件從內部存儲空間拷貝到外部SD卡時,連接PC選擇Transfer files 模式,如果不重啓機器剛剛copy過來的文件不能在PC上的目錄中發現

 

解決方法:

  1. Android 4.4以前,我们可以使用Intent.ACTION_MEDIA_MOUNTED,让Android系统重新扫描一遍SD卡,这样PC就能同步文件管理器的操作了。
  2. Android 4.4以后,google可能是发现了每次调用这个intent都会重新扫描SD卡,非常耗费系统资源,所以禁止非系统应用使用这个intent了。
  3. 需要修改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

 

 

分享到:
评论

相关推荐

    AndroidFileTransfer.dmg

    Mac查看Android文件(AndroidFileTransfer.dmg) Android File Transfer Browse and transfer files between your Mac computer and your Android device. DOWNLOAD NOW Supports macOS 10.7 and higher. By ...

    Android实现复制Assets文件到SD卡

    2. 再用AssetManager的open(String fileName, int accessMode) 方法则指定读取的文件以及访问模式就能得到输入流InputStream。 3. 然后就是用已经open file 的inputStream读取文件,读取完成后记得inputStream....

    可以COPY损坏文件可以COPY损坏文件COPY专家

    可以COPY损坏文件可以COPY损坏文件可以COPY损坏文件

    文件copy 目录copy

    文件copy 目录copy

    FastCopy 绿色汉化单文件版

    由于FastCopy64位软件十分小巧,你甚至可以在安装后,直接将安装目录中的文件复制到任何可移动存储设备中,方便携带,随取随用。去除了多余的帮助文档和说明文件。 Fastcopy,最快的文件拷贝工具!经测试,一个424...

    Java文件操作一例:Copy 复制文件.rar

    Java文件操作一例:Copy 复制文件,虽然是复制文件,不过通过本源码你可以学习很多相关的Java基础技巧,比如Java对文件的事件处理、取得目录内容的事件处理、如何弹出文件选择器、如何得到选择文件的绝对路径、如何...

    pc与android通过usb socket实现手机通信Demo

    a.PC客户端与Android服务端的Socket同步通信(USB) b.操作步骤如下: ----------------------------------------------------------- 1.请将测试数据文件夹中的ucliulanqi.apk copy到c:\下进行测试 2. 将android...

    CopyPath v1.0, Copy paths of the selected files, (新增右键支持复制多文件路径)

    [Win] CopyPath - Copy paths of the selected files This utility is a windows shell extension, which adds "Copy Path" menu item to the shell's context menu. When you select some files, right click ...

    fastcopy 文件拷贝

    Fastcopy是最快的文件拷贝工具。磁盘间相互拷贝文件是司空见惯的事情,通常情况都是利用WINDOWS自带的复制粘贴功能来实现的。这样做在数目较小的情况下倒也没什么问题,但是数目较大时,系统自带的复制功能就有些...

    FastCopy快速拷贝文件软件

    FastCopy 是 Windows 平台上最快的文件拷贝、删除软件。由于其功能强 劲,性能优越,一时间便超越相同类型的所有其他软件。由于该软件十分 小巧,你甚至可以在安装后,直接将安装目录中的文件复制到任何可移动 存储...

    FastCopy文件拷贝工具

    Fastcopy (文件拷贝工具)下载介绍:FastCopy 是 Windows 平台上最快的文件拷贝、删除软件。由于其功能强劲,性能优越,一时间便超越相同类型的所有其他软件。由于该软件十分小巧,你甚至可以在安装后,直接将安装...

    【AndroidFile】Mac & Android 文件互传

    How to use it Download the app. Open AndroidFileTransfer.dmg. Drag Android File Transfer to Applications. Use the USB cable that came...Browse the files and folders on your Android device and copy files.

    Android 复制拷贝 Assets 下的文件夹或文件到 SD 卡(copy directory from assets to sdcard android)

    支持 Assets 下的文件或者文件夹拷贝到手机存储 public static void copyAssetsDirToSDCard(Context context, String assetsDirName, String sdCardPath) { Log.d(TAG, copyAssetsDirToSDCard() called with: ...

    fastcopy本地文件急速传输

    由于该软件十分小巧,你甚至可以在安装后,直接将安装目录中的文件复制到任何可移动存储设备中,方便携带,随取随用。 FastCopy 主要包含下列功能: 1.完全支持拖曳操作,支持拖曳多个文件到来源中; 2.支持外壳...

    copy文件的bat程序

    copy文件的bat程序 bat copy 详细的用批量执行方法。在不用开发工具进行开发要复制文件的时候那是相当有用。快速,高效的复制文件

    copyfiles:在命令行上复制文件

    复制文件 轻松复制文件安装npm install copyfiles -g命令行 Usage: copyfiles [options] inFile [more files ...] outDirectory Options: -u, --up slice a path off the bottom of the paths [number] -a, --all ...

    android 浅复制和深复制-Java Generic Deep Copy 篇

    android 浅复制和深复制-Java Generic Deep Copy 篇

    远程连接及远程相互copy文件

    实现远程桌面控制连接服务器,以及本地和远程文件的相互粘贴复制文件

    Fastcopy文件拷贝copy

    Fastcopy是一款速度非常快的文件拷贝软件。Fastcopy是日本的最快的文件拷贝工具。

    FastCopy 快速复制文件管理器

    FastCopy 文件转移 是一款非常优秀的文件管理工具,主要特色是可以将源文件的权限列表复制到目标文件。方便于在服务器上的文件共享管理。 例如:源文件原来在D分区是已经发布的有权限分配的共享文件,但现在为了方便...

Global site tag (gtag.js) - Google Analytics