static jboolean android_mtp_MtpDevice_import_file(JNIEnv *env, jobject thiz, jint object_id, jstring dest_path) { MtpDevice* device = get_device_from_object(env, thiz); if (device) { const char *destPathStr = env->GetStringUTFChars(dest_path, NULL); if (destPathStr == NULL) { return JNI_FALSE; } jboolean result = device->readObject(object_id, destPathStr, AID_SDCARD_RW, 0664); env->ReleaseStringUTFChars(dest_path, destPathStr); return result; } return JNI_FALSE; }
static jbyteArray android_mtp_MtpDevice_get_object(JNIEnv *env, jobject thiz, jint objectID, jint objectSize) { MtpDevice* device = get_device_from_object(env, thiz); if (!device) return NULL; jbyteArray array = env->NewByteArray(objectSize); if (!array) { jniThrowException(env, "java/lang/OutOfMemoryError", NULL); return NULL; } get_object_callback_data data; data.env = env; data.array = array; if (device->readObject(objectID, get_object_callback, objectSize, &data)) return array; return NULL; }