diff options
author | 2017-10-19 18:36:22 +0000 | |
---|---|---|
committer | 2017-10-19 18:36:22 +0000 | |
commit | 3b997d077317f536df7597032bc14d1e18e1fe17 (patch) | |
tree | 1185770118fe26af1a3d567d5d83235144a1a746 | |
parent | 9c6f24d1ee8e2b440ec70262f6c5c0d9a7237e78 (diff) | |
parent | 59ff05a59f334d9d4043b18d1cadbe027c3ff3ad (diff) |
Merge "Add storageId to moveObjects" am: 1f4f6d2a18 am: 18abf57e99
am: 59ff05a59f
Change-Id: I024be0c75e20e58152dbe0c81e5548d70f06a925
-rwxr-xr-x | media/java/android/mtp/MtpDatabase.java | 26 | ||||
-rw-r--r-- | media/jni/android_mtp_MtpDatabase.cpp | 8 | ||||
-rw-r--r-- | media/jni/android_mtp_MtpServer.cpp | 2 |
3 files changed, 23 insertions, 13 deletions
diff --git a/media/java/android/mtp/MtpDatabase.java b/media/java/android/mtp/MtpDatabase.java index 17b23264a9fc..aaf18e7f935a 100755 --- a/media/java/android/mtp/MtpDatabase.java +++ b/media/java/android/mtp/MtpDatabase.java @@ -471,10 +471,14 @@ public class MtpDatabase implements AutoCloseable { if (parent == 0xFFFFFFFF) { // all objects in root of store parent = 0; + where = STORAGE_PARENT_WHERE; + whereArgs = new String[]{Integer.toString(storageID), + Integer.toString(parent)}; + } else { + // If a parent is specified, the storage is redundant + where = PARENT_WHERE; + whereArgs = new String[]{Integer.toString(parent)}; } - where = STORAGE_PARENT_WHERE; - whereArgs = new String[] { Integer.toString(storageID), - Integer.toString(parent) }; } } else { // query specific format @@ -487,11 +491,16 @@ public class MtpDatabase implements AutoCloseable { if (parent == 0xFFFFFFFF) { // all objects in root of store parent = 0; + where = STORAGE_FORMAT_PARENT_WHERE; + whereArgs = new String[]{Integer.toString(storageID), + Integer.toString(format), + Integer.toString(parent)}; + } else { + // If a parent is specified, the storage is redundant + where = FORMAT_PARENT_WHERE; + whereArgs = new String[]{Integer.toString(format), + Integer.toString(parent)}; } - where = STORAGE_FORMAT_PARENT_WHERE; - whereArgs = new String[] { Integer.toString(storageID), - Integer.toString(format), - Integer.toString(parent) }; } } } @@ -845,7 +854,7 @@ public class MtpDatabase implements AutoCloseable { return MtpConstants.RESPONSE_OK; } - private int moveObject(int handle, int newParent, String newPath) { + private int moveObject(int handle, int newParent, int newStorage, String newPath) { String[] whereArgs = new String[] { Integer.toString(handle) }; // do not allow renaming any of the special subdirectories @@ -857,6 +866,7 @@ public class MtpDatabase implements AutoCloseable { ContentValues values = new ContentValues(); values.put(Files.FileColumns.DATA, newPath); values.put(Files.FileColumns.PARENT, newParent); + values.put(Files.FileColumns.STORAGE_ID, newStorage); int updated = 0; try { // note - we are relying on a special case in MediaProvider.update() to update diff --git a/media/jni/android_mtp_MtpDatabase.cpp b/media/jni/android_mtp_MtpDatabase.cpp index 7225f103db81..0da628917713 100644 --- a/media/jni/android_mtp_MtpDatabase.cpp +++ b/media/jni/android_mtp_MtpDatabase.cpp @@ -180,7 +180,7 @@ public: virtual MtpProperty* getDevicePropertyDesc(MtpDeviceProperty property); virtual MtpResponseCode moveObject(MtpObjectHandle handle, MtpObjectHandle newParent, - MtpString& newPath); + MtpStorageID newStorage, MtpString& newPath); virtual void sessionStarted(); @@ -1000,11 +1000,11 @@ MtpResponseCode MyMtpDatabase::deleteFile(MtpObjectHandle handle) { } MtpResponseCode MyMtpDatabase::moveObject(MtpObjectHandle handle, MtpObjectHandle newParent, - MtpString &newPath) { + MtpStorageID newStorage, MtpString &newPath) { JNIEnv* env = AndroidRuntime::getJNIEnv(); jstring stringValue = env->NewStringUTF((const char *) newPath); MtpResponseCode result = env->CallIntMethod(mDatabase, method_moveObject, - (jint)handle, (jint)newParent, stringValue); + (jint)handle, (jint)newParent, (jint) newStorage, stringValue); checkAndClearExceptionFromCallback(env, __FUNCTION__); env->DeleteLocalRef(stringValue); @@ -1376,7 +1376,7 @@ int register_android_mtp_MtpDatabase(JNIEnv *env) ALOGE("Can't find deleteFile"); return -1; } - method_moveObject = env->GetMethodID(clazz, "moveObject", "(IILjava/lang/String;)I"); + method_moveObject = env->GetMethodID(clazz, "moveObject", "(IIILjava/lang/String;)I"); if (method_moveObject == NULL) { ALOGE("Can't find moveObject"); return -1; diff --git a/media/jni/android_mtp_MtpServer.cpp b/media/jni/android_mtp_MtpServer.cpp index e9e93099c1e2..6ce104d01a9e 100644 --- a/media/jni/android_mtp_MtpServer.cpp +++ b/media/jni/android_mtp_MtpServer.cpp @@ -72,7 +72,7 @@ android_mtp_MtpServer_setup(JNIEnv *env, jobject thiz, jobject javaDatabase, jbo const char *deviceInfoDeviceVersionStr = env->GetStringUTFChars(deviceInfoDeviceVersion, NULL); const char *deviceInfoSerialNumberStr = env->GetStringUTFChars(deviceInfoSerialNumber, NULL); MtpServer* server = new MtpServer(getMtpDatabase(env, javaDatabase), - usePtp, AID_MEDIA_RW, 0664, 0775, + usePtp, MtpString((deviceInfoManufacturerStr != NULL) ? deviceInfoManufacturerStr : ""), MtpString((deviceInfoModelStr != NULL) ? deviceInfoModelStr : ""), MtpString((deviceInfoDeviceVersionStr != NULL) ? deviceInfoDeviceVersionStr : ""), |