Android8.1添加MTP数据同步操作

硬件平台:展讯8541e

软件平台:Andoir8.1

需求:智能硬件连接PC之后,走MTP模式,数据不同步,重新插拔USB线也无作用,只有重启才能同步数据,因此需要添加USB事件触发同步事件。

diff --git a/src/com/android/providers/media/MtpReceiver.java b/src/com/android/providers/media/MtpReceiver.java
index ae5b490..88ded32 100755
--- a/src/com/android/providers/media/MtpReceiver.java
+++ b/src/com/android/providers/media/MtpReceiver.java
@@ -27,6 +27,8 @@ import android.os.Bundle;
 import android.os.UserHandle;
 import android.util.Log;
 import android.mtp.MtpServer;
+import android.os.Environment;
+import android.os.EnvironmentEx;

 
 public class MtpReceiver extends BroadcastReceiver {
     private static final String TAG = MtpReceiver.class.getSimpleName();
@@ -72,6 +74,12 @@ public class MtpReceiver extends BroadcastReceiver {
             }
             if (DEBUG) { Log.d(TAG, "handleUsbState startService"); }
             context.startService(intent);
+            // kbding add for mtp scanner
+            scan(context, MediaProvider.INTERNAL_VOLUME, null);
+            // scan the inner storage
+            String internalStoragePath = EnvironmentEx.getInternalStoragePath().getPath();
+            scan(context, MediaProvider.EXTERNAL_VOLUME, internalStoragePath);
+            // kbding add end

         } else if (!connected || !(mtpEnabled || ptpEnabled)) {
             // Only unbind if disconnected or disabled.
             hasConfigured = false;
@@ -92,4 +100,15 @@ public class MtpReceiver extends BroadcastReceiver {
                     "content://media/none/mtp_connected"), null);
         }
     }
+
+    private void scan(Context context, String volume, String path) {
+        Log.d(TAG, "scan " + volume + " volume path: " + (null == path
+                ? (Environment.getRootDirectory() + "/media") : path));
+        Bundle args = new Bundle();
+        args.putString("volume", volume);
+        // SPRD: Add
+        args.putString("path", path);
+        context.startService(
+                new Intent(context, MediaScannerService.class).putExtras(args));
+    }

 }

实现的思路是在USB插拔事件触发之后,会重新扫描相应的存储目录,同步数据库。

 

Mark一下~

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值