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()