Skip to content

Commit d8138a4

Browse files
committed
Add uri folder creation
1 parent 38a7b71 commit d8138a4

File tree

3 files changed

+19
-0
lines changed

3 files changed

+19
-0
lines changed

gframe/Android/porting_android.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,15 @@ std::vector<epro::Address> getLocalIP() {
467467
return addresses;
468468
}
469469

470+
bool createFolderUri(epro::path_stringview folderUri) {
471+
JniAttacher jni;
472+
jmethodID contentUriCreateDirectory = jni.env->GetMethodID(nativeActivity, "contentUriCreateDirectory", JPARAMS(JSTRING)JBOOL);
473+
jstring jfolderUri = NewJavaString(jni.env, folderUri);
474+
jboolean removed = jni.env->CallBooleanMethod(app_global->activity->clazz, contentUriCreateDirectory, jfolderUri);
475+
jni.env->DeleteLocalRef(jfolderUri);
476+
return removed;
477+
}
478+
470479
bool deleteFileUri(epro::path_stringview fileUri) {
471480
JniAttacher jni;
472481
jmethodID contentUriRemoveFile = jni.env->GetMethodID(nativeActivity, "contentUriRemoveFile", JPARAMS(JSTRING)JBOOL);

gframe/Android/porting_android.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ void dispatchQueuedMessages();
4545

4646
void showErrorDialog(epro::stringview context, epro::stringview message);
4747

48+
bool createFolderUri(epro::path_stringview fileUri);
49+
4850
bool deleteFileUri(epro::path_stringview fileUri);
4951

5052
int openFdFromUri(epro::path_stringview fileUri, epro::path_stringview mode);

gframe/utils.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,10 @@ namespace ygo {
292292
#if EDOPRO_WINDOWS
293293
return SetLastErrorStringIfFailed(CreateDirectory(path.data(), nullptr) || ERROR_ALREADY_EXISTS == GetLastError());
294294
#else
295+
#if EDOPRO_ANDROID
296+
if(porting::pathIsUri(path))
297+
return SetLastErrorStringIfFailed(porting::createFolderUri(path));
298+
#endif
295299
return SetLastErrorStringIfFailed(mkdir(path.data(), 0777) == 0 || errno == EEXIST);
296300
#endif
297301
}
@@ -514,6 +518,10 @@ namespace ygo {
514518
#if EDOPRO_WINDOWS
515519
return RemoveDirectory(path.data());
516520
#else
521+
#if EDOPRO_ANDROID
522+
if(porting::pathIsUri(source))
523+
return porting::deleteFileUri(source);
524+
#endif
517525
return rmdir(path.data()) == 0;
518526
#endif
519527
}

0 commit comments

Comments
 (0)