Loading media/java/android/mtp/MtpDatabase.java +18 −8 Original line number Diff line number Diff line Loading @@ -469,10 +469,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)}; } } } else { // query specific format Loading @@ -485,11 +489,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)}; } } } } Loading Loading @@ -841,7 +850,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 Loading @@ -853,6 +862,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 Loading media/jni/android_mtp_MtpDatabase.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -998,11 +998,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); Loading Loading @@ -1374,7 +1374,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; Loading media/jni/android_mtp_MtpServer.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -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 : ""), Loading Loading
media/java/android/mtp/MtpDatabase.java +18 −8 Original line number Diff line number Diff line Loading @@ -469,10 +469,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)}; } } } else { // query specific format Loading @@ -485,11 +489,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)}; } } } } Loading Loading @@ -841,7 +850,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 Loading @@ -853,6 +862,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 Loading
media/jni/android_mtp_MtpDatabase.cpp +4 −4 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -998,11 +998,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); Loading Loading @@ -1374,7 +1374,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; Loading
media/jni/android_mtp_MtpServer.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -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 : ""), Loading