From de4637d8cb22c5211a0e392d1ef5699c5b53625a Mon Sep 17 00:00:00 2001 From: jules Date: Thu, 14 Jan 2016 10:02:54 +0000 Subject: [PATCH] Added support for some more File::getSpecialLocation locations on Android --- .../juce_core/native/java/JuceAppActivity.java | 12 ++++++++++++ .../juce_core/native/juce_android_Files.cpp | 18 +++++++++++------- .../juce_core/native/juce_android_JNIHelpers.h | 5 +++++ 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/modules/juce_core/native/java/JuceAppActivity.java b/modules/juce_core/native/java/JuceAppActivity.java index d2f78c390a..50c9abd687 100644 --- a/modules/juce_core/native/java/JuceAppActivity.java +++ b/modules/juce_core/native/java/JuceAppActivity.java @@ -38,6 +38,7 @@ import android.os.Handler; import android.os.Build; import android.os.Process; import android.os.ParcelUuid; +import android.os.Environment; import android.view.*; import android.view.inputmethod.BaseInputConnection; import android.view.inputmethod.EditorInfo; @@ -917,6 +918,17 @@ public class JuceAppActivity extends Activity : locale.getDisplayLanguage (java.util.Locale.US); } + private static final String getFileLocation (String type) + { + return Environment.getExternalStoragePublicDirectory (type).getAbsolutePath(); + } + + public static final String getDocumentsFolder() { return getFileLocation (Environment.DIRECTORY_DOCUMENTS); } + public static final String getPicturesFolder() { return getFileLocation (Environment.DIRECTORY_PICTURES); } + public static final String getMusicFolder() { return getFileLocation (Environment.DIRECTORY_MUSIC); } + public static final String getMoviesFolder() { return getFileLocation (Environment.DIRECTORY_MOVIES); } + public static final String getDownloadsFolder() { return getFileLocation (Environment.DIRECTORY_DOWNLOADS); } + //============================================================================== private final class SingleMediaScanner implements MediaScannerConnectionClient { diff --git a/modules/juce_core/native/juce_android_Files.cpp b/modules/juce_core/native/juce_android_Files.cpp index a3442149e6..81701fe78e 100644 --- a/modules/juce_core/native/juce_android_Files.cpp +++ b/modules/juce_core/native/juce_android_Files.cpp @@ -46,23 +46,27 @@ String File::getVersion() const return String(); } +static File getSpecialFile (jmethodID type) +{ + return File (juceString (LocalRef ((jstring) getEnv()->CallStaticObjectMethod (JuceAppActivity, type)))); +} + File File::getSpecialLocation (const SpecialLocationType type) { switch (type) { case userHomeDirectory: - case userDocumentsDirectory: - case userMusicDirectory: - case userMoviesDirectory: - case userPicturesDirectory: case userApplicationDataDirectory: case userDesktopDirectory: - return File (android.appDataDir); - case commonApplicationDataDirectory: - case commonDocumentsDirectory: return File (android.appDataDir); + case userDocumentsDirectory: + case commonDocumentsDirectory: return getSpecialFile (JuceAppActivity.getDocumentsFolder); + case userPicturesDirectory: return getSpecialFile (JuceAppActivity.getPicturesFolder); + case userMusicDirectory: return getSpecialFile (JuceAppActivity.getMusicFolder); + case userMoviesDirectory: return getSpecialFile (JuceAppActivity.getMoviesFolder); + case globalApplicationsDirectory: return File ("/system/app"); diff --git a/modules/juce_core/native/juce_android_JNIHelpers.h b/modules/juce_core/native/juce_android_JNIHelpers.h index 6e4a1f367f..83ad5b74f6 100644 --- a/modules/juce_core/native/juce_android_JNIHelpers.h +++ b/modules/juce_core/native/juce_android_JNIHelpers.h @@ -277,6 +277,11 @@ extern AndroidSystem android; METHOD (showOkCancelBox, "showOkCancelBox", "(Ljava/lang/String;Ljava/lang/String;J)V") \ METHOD (showYesNoCancelBox, "showYesNoCancelBox", "(Ljava/lang/String;Ljava/lang/String;J)V") \ STATICMETHOD (getLocaleValue, "getLocaleValue", "(Z)Ljava/lang/String;") \ + STATICMETHOD (getDocumentsFolder, "getDocumentsFolder", "()Ljava/lang/String;") \ + STATICMETHOD (getPicturesFolder, "getPicturesFolder", "()Ljava/lang/String;") \ + STATICMETHOD (getMusicFolder, "getMusicFolder", "()Ljava/lang/String;") \ + STATICMETHOD (getDownloadsFolder, "getDownloadsFolder", "()Ljava/lang/String;") \ + STATICMETHOD (getMoviesFolder, "getMoviesFolder", "()Ljava/lang/String;") \ METHOD (scanFile, "scanFile", "(Ljava/lang/String;)V") \ METHOD (getTypeFaceFromAsset, "getTypeFaceFromAsset", "(Ljava/lang/String;)Landroid/graphics/Typeface;") \ METHOD (getTypeFaceFromByteArray,"getTypeFaceFromByteArray","([B)Landroid/graphics/Typeface;") \