kopia lustrzana https://github.com/ge0rg/aprsdroid
osm prefs: add support for convoluted Android 5+ external/primary storage URLs
rodzic
b48dca4a99
commit
1c535ac281
|
@ -3,6 +3,7 @@ package org.aprsdroid.app
|
|||
import _root_.android.content.Intent
|
||||
import _root_.android.net.Uri
|
||||
import _root_.android.os.Bundle
|
||||
import _root_.android.os.Environment
|
||||
import _root_.android.preference.Preference
|
||||
import _root_.android.preference.Preference.OnPreferenceClickListener
|
||||
import _root_.android.preference.PreferenceActivity
|
||||
|
@ -26,21 +27,35 @@ class PrefsAct extends PreferenceActivity {
|
|||
fileChooserPreference("themefile", 123457)
|
||||
}
|
||||
|
||||
def resolveContentUri(uri : Uri) = {
|
||||
val Array(storage, path) = uri.getPath().replace("/document/", "").split(":", 2)
|
||||
android.util.Log.d("PrefsAct", "resolveContentUri s=" + storage + " p=" + path)
|
||||
if (storage == "primary")
|
||||
Environment.getExternalStorageDirectory() + "/" + path
|
||||
else
|
||||
"/storage/" + storage + "/" + path
|
||||
}
|
||||
|
||||
def parseFilePickerResult(data : Intent, pref_name : String, error_id : Int) {
|
||||
val file = data.getData().getScheme() match {
|
||||
case "file" =>
|
||||
data.getData().getPath()
|
||||
case "content" =>
|
||||
// fix up Uri for KitKat+; http://stackoverflow.com/a/27271131/539443
|
||||
val fixup_uri = Uri.parse(data.getDataString().replace(
|
||||
"content://com.android.providers.downloads.documents/document",
|
||||
"content://downloads/public_downloads"))
|
||||
val cursor = getContentResolver().query(fixup_uri, null, null, null, null)
|
||||
cursor.moveToFirst()
|
||||
val idx = cursor.getColumnIndex("_data")
|
||||
val result = if (idx != -1) cursor.getString(idx) else null
|
||||
cursor.close()
|
||||
result
|
||||
// fix up Uri for KitKat+; http://stackoverflow.com/a/20559175/539443
|
||||
// http://stackoverflow.com/a/27271131/539443
|
||||
if ("com.android.externalstorage.documents".equals(data.getData().getAuthority())) {
|
||||
resolveContentUri(data.getData())
|
||||
} else {
|
||||
val fixup_uri = Uri.parse(data.getDataString().replace(
|
||||
"content://com.android.providers.downloads.documents/document",
|
||||
"content://downloads/public_downloads"))
|
||||
val cursor = getContentResolver().query(fixup_uri, null, null, null, null)
|
||||
cursor.moveToFirst()
|
||||
val idx = cursor.getColumnIndex("_data")
|
||||
val result = if (idx != -1) cursor.getString(idx) else null
|
||||
cursor.close()
|
||||
result
|
||||
}
|
||||
case _ =>
|
||||
null
|
||||
}
|
||||
|
|
Ładowanie…
Reference in New Issue