diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index ca33a8e..b1759b1 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -12,6 +12,6 @@ - + \ No newline at end of file diff --git a/app/release/app-release.apk b/app/release/app-release.apk index 59ced75..3bb1315 100644 Binary files a/app/release/app-release.apk and b/app/release/app-release.apk differ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 59acd07..a121a6c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,7 +33,8 @@ android:name=".MainActivity" android:exported="true" android:label="@string/app_name" - android:theme="@style/Theme.MDEditor"> + android:theme="@style/Theme.MDEditor" + android:launchMode="singleInstance"> diff --git a/app/src/main/java/org/wntr/mdeditor/MainActivity.kt b/app/src/main/java/org/wntr/mdeditor/MainActivity.kt index c759be5..7b4e75b 100644 --- a/app/src/main/java/org/wntr/mdeditor/MainActivity.kt +++ b/app/src/main/java/org/wntr/mdeditor/MainActivity.kt @@ -201,58 +201,24 @@ class MainActivity : AppCompatActivity() { saveFile() } } + override fun onResume() { super.onResume() - loadMetaFromSharedPrefs() - - var uri:Uri? = null - var mimeType: String? = null - if ( intent!= null ) { - if (intent.action == Intent.ACTION_SEND && intent.extras != null) { - if (intent.extras!!.get(Intent.EXTRA_STREAM) != null){ - uri = intent.extras!!.get(Intent.EXTRA_STREAM) as Uri - mimeType = "image" - } else { - uri = parse(intent.extras!!.getCharSequence(Intent.EXTRA_TEXT).toString()) - } - } else if (intent.action == Intent.ACTION_VIEW && intent.data != null) { - uri = parse(intent.dataString) - mimeType = contentResolver.getType(uri) - if (mimeType != null) { - if (mimeType.split("/")[0] == "text" ) { - Log.i(javaClass.simpleName, "Wanna open a text file") - mimeType = "text" - } - else if (mimeType.split("/")[0] == "image" ) { - Log.i(javaClass.simpleName, "Wanna upload a image") - mimeType = "image" - } - } - } - Log.i(javaClass.simpleName,"Uri: $uri") - if (uri != null && uri.toString()!="null") { - intentScheme = uri.scheme!! - if (intentScheme == "content") { - Log.i(javaClass.simpleName, "content intent") - } - else if (intentScheme =="http" || intentScheme == "https") { - intentScheme = "link" - Log.i(javaClass.simpleName, "link intent") - } - else Log.i(javaClass.simpleName, "unknown intent") - } - } + loadMetaFromSharedPrefs() CoroutineScope(Dispatchers.Main).launch { withContext(Dispatchers.IO) { - if (mimeType == "text" && intentScheme == "content") { - readFile(intent.data!!) - } else { + //if (contentResolver.getType(parse(intent.dataString))!!.split("/")[0] == "text" && intentScheme == "content") { + if (intent.data != null) { + if (contentResolver.getType(parse(intent.dataString))!!.split("/")[0] == "text") { + readFile(intent.data!!) + intent.data = null + } + } else { // No start with intent data. Load previously used file if (thisFileUri !== null) readFile(thisFileUri!!) } - return@withContext } - webView.evaluateJavascript("onRead();"){} + webView.evaluateJavascript("onRead();") {} if (metaData.metaData.get("url") !== null) { val url = parse(metaData.metaData.get("url")) @@ -262,14 +228,66 @@ class MainActivity : AppCompatActivity() { Log.i(javaClass.simpleName, "Starting api controller for: $apiHost") api = ghostAPI(applicationContext, apiHost) } - if (intentScheme == "link" && uri.toString() !="null") { - mdToAppend += "[](${uri})\n" - webView.evaluateJavascript("onRead();"){} - intent.putExtra(Intent.EXTRA_TEXT, null as CharSequence?) + } + } + override fun onNewIntent(intent:Intent) { + super.onNewIntent(intent) + + Log.i(javaClass.simpleName, "intent data onNewIntent: ${intent.data.toString()}\nIntent action: ${intent.action}") + + var uri:Uri? = null + var mimeType: String? = null + + if (intent.action == Intent.ACTION_SEND && intent.extras != null) { + if (intent.extras!!.get(Intent.EXTRA_STREAM) != null){ + uri = intent.extras!!.get(Intent.EXTRA_STREAM) as Uri + mimeType = "image" + } else { + uri = parse(intent.extras!!.getCharSequence(Intent.EXTRA_TEXT).toString()) } - if (intentScheme == "content" && mimeType == "image" && uri != null) { + } else if (intent.action == Intent.ACTION_VIEW && intent.data != null) { + uri = parse(intent.dataString) + mimeType = contentResolver.getType(uri) + if (mimeType != null) { + if (mimeType.split("/")[0] == "text" ) { + Log.i(javaClass.simpleName, "Wanna open a text file") + mimeType = "text" + } + else if (mimeType.split("/")[0] == "image" ) { + Log.i(javaClass.simpleName, "Wanna upload a image") + mimeType = "image" + } + } + } + Log.i(javaClass.simpleName,"Uri: $uri") + if (uri != null && uri.toString()!="null") { + intentScheme = uri.scheme!! + if (intentScheme == "content") { + Log.i(javaClass.simpleName, "content intent") + } + else if (intentScheme =="http" || intentScheme == "https") { + intentScheme = "link" + Log.i(javaClass.simpleName, "link intent") + } + else Log.i(javaClass.simpleName, "unknown intent") + } + + if (intentScheme == "link" && uri.toString() !="null") { + mdToAppend += "[](${uri})\n" + webView.evaluateJavascript("onRead();"){} + intent.putExtra(Intent.EXTRA_TEXT, null as CharSequence?) + } + if (intentScheme == "content") { + if (mimeType == "image" && uri != null) { pushImage(uri) intent.putExtra(Intent.EXTRA_STREAM, null as Uri?) + } else if (mimeType == "text" && intent.data != null ) { + CoroutineScope(Dispatchers.Main).launch { + withContext(Dispatchers.IO) { + readFile(intent.data!!) + } + webView.evaluateJavascript("onRead();") {} + } } } } @@ -940,6 +958,10 @@ class MainActivity : AppCompatActivity() { uri, Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION ) + } catch (e: java.lang.SecurityException) { + Log.d(javaClass.simpleName, "Couldn't get persistable URI permissions. Trying to grant 'em.\n${e.stackTraceToString()}") + } + try { grantUriPermission( "org.wntr.mdeditor", uri, @@ -1024,8 +1046,8 @@ class MainActivity : AppCompatActivity() { } } - override protected fun onSaveInstanceState(outState: Bundle) { - super.onSaveInstanceState(outState) + override fun onPause() { + super.onPause() /*outState.putString("test", "onSaveInstanceState-String")*/ webView.evaluateJavascript("saveFile();", ValueCallback() {}) webView.evaluateJavascript("easyMDE.codemirror.doc.getCursor();") { @@ -1033,7 +1055,7 @@ class MainActivity : AppCompatActivity() { Log.i(javaClass.simpleName,"Cursor: $it") saveMetaToSharedPrefs() } - Log.i(javaClass.simpleName, "\"onSaveInstanceState\" durchlaufen") + Log.i(javaClass.simpleName, "\"onPause\" durchlaufen") } override protected fun onRestoreInstanceState(savedInstanceState: Bundle) { diff --git a/app/src/main/res/raw/controller.js b/app/src/main/res/raw/controller.js index 6040f5d..0d4cd30 100644 --- a/app/src/main/res/raw/controller.js +++ b/app/src/main/res/raw/controller.js @@ -1,3 +1,12 @@ +function onRead() { + easyMDE.codemirror.doc.setValue(Android.getValue()) + easyMDE.codemirror.doc.markClean() + easyMDE.codemirror.focus() + console.log(Android.getCursor()) + easyMDE.codemirror.doc.setCursor(JSON.parse(Android.getCursor())) + pasteText() +} + function saveAs() { Android.triggerNewBuffer(easyMDE.value()) } @@ -8,14 +17,6 @@ function saveFile() { function blankBuffer() { Android.triggerNewBuffer("") } -function onRead() { - easyMDE.codemirror.doc.setValue(Android.getValue()) - easyMDE.codemirror.doc.markClean() - easyMDE.codemirror.focus() - console.log(Android.getCursor()) - easyMDE.codemirror.doc.setCursor(JSON.parse(Android.getCursor())) - pasteText() -} function openFile() { saveFile()