SDL_AndroidGetExternalStorageState(): return 0 on success, and fills *state with flags

This commit is contained in:
Sylvain 2023-02-09 20:44:46 +01:00 committed by Sylvain Becker
parent a8e89f2567
commit a2f3711c80
3 changed files with 20 additions and 13 deletions

View file

@ -2395,19 +2395,22 @@ const char *SDL_AndroidGetInternalStoragePath(void)
return s_AndroidInternalFilesPath;
}
int SDL_AndroidGetExternalStorageState(void)
int SDL_AndroidGetExternalStorageState(Uint32 *state)
{
struct LocalReferenceHolder refs = LocalReferenceHolder_Setup(__FUNCTION__);
jmethodID mid;
jclass cls;
jstring stateString;
const char *state;
const char *state_string;
int stateFlags;
JNIEnv *env = Android_JNI_GetEnv();
if (!LocalReferenceHolder_Init(&refs, env)) {
LocalReferenceHolder_Cleanup(&refs);
return 0;
if (state) {
*state = 0;
}
return -1;
}
cls = (*env)->FindClass(env, "android/os/Environment");
@ -2415,23 +2418,26 @@ int SDL_AndroidGetExternalStorageState(void)
"getExternalStorageState", "()Ljava/lang/String;");
stateString = (jstring)(*env)->CallStaticObjectMethod(env, cls, mid);
state = (*env)->GetStringUTFChars(env, stateString, NULL);
state_string = (*env)->GetStringUTFChars(env, stateString, NULL);
/* Print an info message so people debugging know the storage state */
__android_log_print(ANDROID_LOG_INFO, "SDL", "external storage state: %s", state);
__android_log_print(ANDROID_LOG_INFO, "SDL", "external storage state: %s", state_string);
if (SDL_strcmp(state, "mounted") == 0) {
if (SDL_strcmp(state_string, "mounted") == 0) {
stateFlags = SDL_ANDROID_EXTERNAL_STORAGE_READ |
SDL_ANDROID_EXTERNAL_STORAGE_WRITE;
} else if (SDL_strcmp(state, "mounted_ro") == 0) {
} else if (SDL_strcmp(state_string, "mounted_ro") == 0) {
stateFlags = SDL_ANDROID_EXTERNAL_STORAGE_READ;
} else {
stateFlags = 0;
}
(*env)->ReleaseStringUTFChars(env, stateString, state);
(*env)->ReleaseStringUTFChars(env, stateString, state_string);
LocalReferenceHolder_Cleanup(&refs);
return stateFlags;
if (state) {
*state = stateFlags;
}
return 0;
}
const char *SDL_AndroidGetExternalStoragePath(void)