diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cdb486d2..0c13cce1 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -62,7 +62,7 @@
-
+
diff --git a/app/src/main/kotlin/de/markusfisch/android/binaryeye/activity/CameraActivity.kt b/app/src/main/kotlin/de/markusfisch/android/binaryeye/activity/CameraActivity.kt
index 46e40b09..98a6f1b4 100644
--- a/app/src/main/kotlin/de/markusfisch/android/binaryeye/activity/CameraActivity.kt
+++ b/app/src/main/kotlin/de/markusfisch/android/binaryeye/activity/CameraActivity.kt
@@ -52,6 +52,8 @@ import de.markusfisch.android.zxingcpp.ZxingCpp.BarcodeFormat
import de.markusfisch.android.zxingcpp.ZxingCpp.Binarizer
import de.markusfisch.android.zxingcpp.ZxingCpp.ReaderOptions
import de.markusfisch.android.zxingcpp.ZxingCpp.Result
+import java.io.FileInputStream
+import java.util.Scanner
import kotlin.math.max
import kotlin.math.min
import kotlin.math.roundToInt
@@ -135,7 +137,7 @@ class CameraActivity : AppCompatActivity() {
initDetectorView()
if (intent?.action == Intent.ACTION_SEND &&
- intent.type == "text/plain"
+ intent.type?.startsWith("text/") == true
) {
handleSendText(intent)
}
@@ -347,9 +349,27 @@ class CameraActivity : AppCompatActivity() {
private fun handleSendText(intent: Intent) {
val text = intent.getStringExtra(Intent.EXTRA_TEXT)
+
if (text?.isEmpty() == false) {
startActivity(MainActivity.getEncodeIntent(this, text, true))
finish()
+ return
+ }
+
+ // Read text from file
+ val textUri = intent.getParcelableExtra(Intent.EXTRA_STREAM) as Uri?
+ if (textUri != null) {
+ val file = contentResolver.openFileDescriptor(textUri, "r")
+ if (file != null) {
+ val fs = FileInputStream(file.fileDescriptor)
+ val scn = Scanner(fs).useDelimiter("\\A")
+ if (scn.hasNext()) {
+ val fText = scn.next()
+ startActivity(MainActivity.getEncodeIntent(this, fText, true))
+ finish()
+ }
+ file.close()
+ }
}
}