diff --git a/android/src/AndroidInterface.cc b/android/src/AndroidInterface.cc index f8c0874314d..8276f56a20f 100644 --- a/android/src/AndroidInterface.cc +++ b/android/src/AndroidInterface.cc @@ -107,7 +107,7 @@ QString getSDCardPath() const QJniObject result = QJniObject::callStaticObjectMethod(kJniQGCActivityClassName, "getSDCardPath", "()Ljava/lang/String;"); if (!result.isValid()) { - qCWarning(AndroidInterfaceLog) << "Invalid Result"; + qCWarning(AndroidInterfaceLog) << "Call to java getSDCardPath failed: Invalid Result"; return QString(); } diff --git a/android/src/org/mavlink/qgroundcontrol/QGCActivity.java b/android/src/org/mavlink/qgroundcontrol/QGCActivity.java index 7c2025aa8fe..c40ed727398 100644 --- a/android/src/org/mavlink/qgroundcontrol/QGCActivity.java +++ b/android/src/org/mavlink/qgroundcontrol/QGCActivity.java @@ -1,11 +1,17 @@ package org.mavlink.qgroundcontrol; +import java.util.List; +import java.lang.reflect.Method; + import android.content.Context; import android.os.Bundle; import android.os.PowerManager; import android.net.wifi.WifiManager; import android.util.Log; import android.view.WindowManager; +import android.app.Activity; +import android.os.storage.StorageManager; +import android.os.storage.StorageVolume; import org.qtproject.qt.android.bindings.QtActivity; @@ -110,6 +116,35 @@ private void releaseMulticastLock() { } } + public static String getSDCardPath() { + StorageManager storageManager = (StorageManager)m_instance.getSystemService(Activity.STORAGE_SERVICE); + List volumes = storageManager.getStorageVolumes(); + Method mMethodGetPath; + String path = ""; + for (StorageVolume vol : volumes) { + try { + mMethodGetPath = vol.getClass().getMethod("getPath"); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + continue; + } + try { + path = (String) mMethodGetPath.invoke(vol); + } catch (Exception e) { + e.printStackTrace(); + continue; + } + + if (vol.isRemovable() == true) { + Log.i(TAG, "removable sd card mounted " + path); + return path; + } else { + Log.i(TAG, "storage mounted " + path); + } + } + return ""; + } + // Native C++ functions public native boolean nativeInit(); public native void qgcLogDebug(final String message);