improve acceptance of intent data

hauntED
yova 4 months ago
parent 65a5f9976f
commit af2814b3e0

@ -12,6 +12,6 @@
</deviceKey> </deviceKey>
</Target> </Target>
</targetSelectedWithDropDown> </targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2023-10-14T19:25:23.306847449Z" /> <timeTargetWasSelectedWithDropDown value="2024-01-15T15:22:12.274341182Z" />
</component> </component>
</project> </project>

Binary file not shown.

@ -33,7 +33,8 @@
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"
android:label="@string/app_name" android:label="@string/app_name"
android:theme="@style/Theme.MDEditor"> android:theme="@style/Theme.MDEditor"
android:launchMode="singleInstance">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />

@ -201,58 +201,24 @@ class MainActivity : AppCompatActivity() {
saveFile() saveFile()
} }
} }
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
loadMetaFromSharedPrefs()
var uri:Uri? = null
var mimeType: String? = null
if ( intent!= null ) { loadMetaFromSharedPrefs()
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")
}
}
CoroutineScope(Dispatchers.Main).launch { CoroutineScope(Dispatchers.Main).launch {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
if (mimeType == "text" && intentScheme == "content") { //if (contentResolver.getType(parse(intent.dataString))!!.split("/")[0] == "text" && intentScheme == "content") {
readFile(intent.data!!) if (intent.data != null) {
} else { 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!!) if (thisFileUri !== null) readFile(thisFileUri!!)
} }
return@withContext
} }
webView.evaluateJavascript("onRead();"){} webView.evaluateJavascript("onRead();") {}
if (metaData.metaData.get("url") !== null) { if (metaData.metaData.get("url") !== null) {
val url = parse(metaData.metaData.get("url")) val url = parse(metaData.metaData.get("url"))
@ -262,14 +228,66 @@ class MainActivity : AppCompatActivity() {
Log.i(javaClass.simpleName, "Starting api controller for: $apiHost") Log.i(javaClass.simpleName, "Starting api controller for: $apiHost")
api = ghostAPI(applicationContext, apiHost) api = ghostAPI(applicationContext, apiHost)
} }
if (intentScheme == "link" && uri.toString() !="null") { }
mdToAppend += "[](${uri})\n" }
webView.evaluateJavascript("onRead();"){} override fun onNewIntent(intent:Intent) {
intent.putExtra(Intent.EXTRA_TEXT, null as CharSequence?) 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) pushImage(uri)
intent.putExtra(Intent.EXTRA_STREAM, null as 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, uri,
Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION 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( grantUriPermission(
"org.wntr.mdeditor", "org.wntr.mdeditor",
uri, uri,
@ -1024,8 +1046,8 @@ class MainActivity : AppCompatActivity() {
} }
} }
override protected fun onSaveInstanceState(outState: Bundle) { override fun onPause() {
super.onSaveInstanceState(outState) super.onPause()
/*outState.putString("test", "onSaveInstanceState-String")*/ /*outState.putString("test", "onSaveInstanceState-String")*/
webView.evaluateJavascript("saveFile();", ValueCallback<String>() {}) webView.evaluateJavascript("saveFile();", ValueCallback<String>() {})
webView.evaluateJavascript("easyMDE.codemirror.doc.getCursor();") { webView.evaluateJavascript("easyMDE.codemirror.doc.getCursor();") {
@ -1033,7 +1055,7 @@ class MainActivity : AppCompatActivity() {
Log.i(javaClass.simpleName,"Cursor: $it") Log.i(javaClass.simpleName,"Cursor: $it")
saveMetaToSharedPrefs() saveMetaToSharedPrefs()
} }
Log.i(javaClass.simpleName, "\"onSaveInstanceState\" durchlaufen") Log.i(javaClass.simpleName, "\"onPause\" durchlaufen")
} }
override protected fun onRestoreInstanceState(savedInstanceState: Bundle) { override protected fun onRestoreInstanceState(savedInstanceState: Bundle) {

@ -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() { function saveAs() {
Android.triggerNewBuffer(easyMDE.value()) Android.triggerNewBuffer(easyMDE.value())
} }
@ -8,14 +17,6 @@ function saveFile() {
function blankBuffer() { function blankBuffer() {
Android.triggerNewBuffer("") 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() { function openFile() {
saveFile() saveFile()

Loading…
Cancel
Save