問題描述:文件從內部存儲空間拷貝到外部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
相关推荐
在Android开发中,有时我们需要将应用内部的RAW资源文件复制到外部存储(如SD卡)以便于用户访问或保存数据。这个"Android之将RAW资源文件写入SD卡工具类"是一个实用的功能,可以帮助开发者轻松完成这个任务。下面将...
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的内部存储、外部存储(包括SD卡存储)以及简单的文件管理,尤其是通过对话框实现的文件操作。 首先,让我们了解**内部存储**。Android为每个应用程序提供了私有的内部存储空间,这里的文件...
在Android开发中,有时我们需要将应用内部的资源文件复制到外部存储(如SD卡)上,以便用户可以访问或操作这些文件。这个过程涉及到对Android系统API的理解,特别是与文件操作、AssetManager以及多线程处理相关的...
在Android系统中,SD卡(Secure Digital Card)是设备扩展存储的重要部分,用户通常需要访问和管理SD卡上的文件。本示例旨在帮助开发者实现一个功能完备的SD卡文件浏览器,使得用户能够方便地浏览、选择和操作SD卡上...
标题"可以COPY损坏文件可以COPY损坏文件COPY专家"暗示了我们关注的重点是如何处理和复制损坏的文件。在这个主题下,我们将深入探讨文件损坏的原因、如何识别损坏文件,以及如何尝试恢复或复制这些文件。 文件损坏...
此外,Android提供了`ContentResolver`和`Uri`机制来访问存储在外部存储(如SD卡)或内部存储中的内容。 2. **目录浏览**:文件管理器的核心功能之一是能浏览任意目录。这需要实现递归遍历目录的功能,列出所有子...
在Android平台上将文件上传到.NET服务器是一项常见的任务,涉及到客户端(Android)与服务器端(.NET)的交互。本文将详细讲解如何实现这一过程,并提供相关的代码示例。 首先,客户端(Android)需要使用HTTP或者...
但是在复制文件夹时,发现了文件差异问题,例如复制的jpg文件存在7个字节的差异,PDF文件存在77字节的差异等。 文件复制函数mf_copy()使用了FATFS文件系统的API,实现了文件的复制功能。该函数将源文件psrc复制到...
FastCopy是一款高效、实用的文件复制工具,尤其在局域网环境中的文件传输表现卓越。它以其快速的拷贝速度和稳定的操作性能赢得了广大用户的喜爱。FastCopy在处理大量数据或者大文件时,能显著提高文件拷贝的效率,极...
主要的存储位置包括内部存储(内部存储空间)和外部存储(SD卡或外部存储空间)。在Android应用中,通常会使用`getFilesDir()`,`getCacheDir()`,`getExternalFilesDir()`等方法来获取特定类型的存储路径。 2. **...
远程连接及远程相互copy文件 远程连接是一种允许用户从远程位置访问和控制计算机的技术。通过远程连接,可以实现远程桌面控制、文件传输、打印机共享等功能。下面将详细介绍远程连接的实现步骤和相关知识点。 一、...
在Android平台上,开发一个文件管理器是一个常见的任务,它允许用户查看、操作和管理设备上的文件和文件夹。本文将详细讲解如何实现一个基础的Android文件管理器,涵盖文件夹浏览、文件拷贝复制等功能。 首先,我们...
在IT行业中,文件复制(File Copy)和目录复制(Directory Copy)是日常操作的重要组成部分,无论是数据备份、软件部署还是系统迁移,都离不开这两个基本功能。下面将详细讲解这两个概念及其相关知识点。 文件复制...
保存文件时,将其命名为`copy_files.bat`,确保将"文件1 要复制的文件2 ..."替换为实际的文件名,并将"目标目录"替换为你希望复制到的路径。记得将文件扩展名从`.txt`改为`.bat`,然后关闭并运行该脚本。 批量复制...
标题中的“Fastcopy文件拷贝copy”指的是一款名为Fastcopy的高效文件复制软件。Fastcopy因其极快的文件拷贝速度而闻名,它是由日本开发者设计并开发的一款工具,旨在提供比操作系统自带的文件复制功能更快速、更稳定...
"Copy File To Mobile"这个主题聚焦于如何将PC上的文件复制到手机上。以下是一些相关的重要知识点,以及如何实现这一过程。 1. **USB连接**:最常见的方式是通过USB线将手机与PC相连。确保你的手机开启USB调试模式...
例如,写入外部存储(SD卡)需要`WRITE_EXTERNAL_STORAGE`权限,自Android 6.0(API level 23)起,运行时权限需要动态请求。 9. **适配多种设备和Android版本**: 文件操作的代码需要考虑到不同设备的差异和...
在日常的工作和生活中,我们经常需要将大量的文件或文件夹从一个位置复制到另一个位置。在这个过程中,速度和稳定性往往是用户最关心的问题。FastCopy,就是这样一款专为提升文件复制效率而设计的工具,它以其卓越的...
例如,当需要将一个大型项目的所有文件从一台电脑复制到另一台电脑时,FastCopy 可以显著提高效率。此外,定期使用FastCopy进行重要文件夹的备份也是明智的选择,以防止数据丢失。 在使用时,建议保持足够的硬盘...