Quellcode durchsuchen

add file uploading in pro college

Ethosa vor 3 Jahren
Ursprung
Commit
3354e91da2

+ 4 - 4
.idea/deploymentTargetDropDown.xml

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
   <component name="deploymentTargetDropDown">
-    <runningDeviceTargetSelectedWithDropDown>
+    <targetSelectedWithDropDown>
       <Target>
-        <type value="RUNNING_DEVICE_TARGET" />
+        <type value="QUICK_BOOT_TARGET" />
         <deviceKey>
           <Key>
             <type value="VIRTUAL_DEVICE_PATH" />
@@ -11,7 +11,7 @@
           </Key>
         </deviceKey>
       </Target>
-    </runningDeviceTargetSelectedWithDropDown>
-    <timeTargetWasSelectedWithDropDown value="2022-04-21T14:23:43.352835200Z" />
+    </targetSelectedWithDropDown>
+    <timeTargetWasSelectedWithDropDown value="2022-04-30T03:15:41.989067600Z" />
   </component>
 </project>

+ 2 - 0
app/src/main/java/com/ethosa/ktc/Constants.kt

@@ -33,5 +33,7 @@ sealed class Constants {
 
         // AppDynamicTheme
         const val CURRENT_THEME = "current_theme"
+
+        const val FILECHOOSER_RESULTCODE = 100
     }
 }

+ 40 - 4
app/src/main/java/com/ethosa/ktc/college/ProCollege.kt

@@ -1,14 +1,17 @@
 package com.ethosa.ktc.college
 
 import android.annotation.SuppressLint
+import android.content.ActivityNotFoundException
+import android.content.Intent
+import android.net.Uri
 import android.view.View
-import android.webkit.JavascriptInterface
-import android.webkit.WebChromeClient
-import android.webkit.WebView
-import android.webkit.WebViewClient
+import android.webkit.*
+import android.widget.Toast
 import androidx.annotation.Keep
+import com.ethosa.ktc.Constants
 import com.ethosa.ktc.ui.fragments.ProCollegeFragment
 
+
 /**
  * Provides work with pro college.
  */
@@ -102,6 +105,39 @@ class ProCollege(
                 else
                     fragment.binding.contentProgress.visibility = View.VISIBLE
             }
+
+            override fun onShowFileChooser(
+                webView: WebView?,
+                filePathCallback: ValueCallback<Array<Uri>>?,
+                fileChooserParams: FileChooserParams?
+            ): Boolean {
+                if (fragment.uploadMessage != null) {
+                    fragment.uploadMessage?.onReceiveValue(null)
+                    fragment.uploadMessage = null
+                }
+
+                fragment.uploadMessage = filePathCallback
+                val intent= fileChooserParams!!.createIntent()
+                try {
+                    @Suppress("DEPRECATION")
+                    fragment.startActivityForResult(intent, Constants.FILECHOOSER_RESULTCODE)
+                } catch (e: ActivityNotFoundException) {
+                    fragment.uploadMessage = null
+                    Toast.makeText(
+                        fragment.requireContext(),
+                        "Cannot Open File Chooser",
+                        Toast.LENGTH_LONG
+                    ).show()
+                    return false
+                }
+                return true
+            }
+        }
+
+        fragment.binding.content.setDownloadListener { url, _, _, _, _ ->
+            val i = Intent(Intent.ACTION_VIEW)
+            i.data = Uri.parse(url)
+            fragment.startActivity(i)
         }
 
         fragment.binding.content.loadUrl(LOGIN_PAGE)

+ 1 - 1
app/src/main/java/com/ethosa/ktc/ui/activities/MainActivity.kt

@@ -29,7 +29,7 @@ class MainActivity : AppCompatActivity() {
         binding = ActivityMainBinding.inflate(layoutInflater)
         setContentView(binding.root)
 
-        if (Build.VERSION.SDK_INT >= 31)
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S)
             binding.navView.itemActiveIndicatorColor = getColorStateList(R.color.active_indicator)
 
         val navController = findNavController(R.id.nav_host_fragment_activity_main)

+ 17 - 1
app/src/main/java/com/ethosa/ktc/ui/fragments/ProCollegeFragment.kt

@@ -1,15 +1,20 @@
 package com.ethosa.ktc.ui.fragments
 
+import android.app.Activity.RESULT_OK
+import android.content.Intent
 import android.content.res.Configuration
+import android.net.Uri
 import android.os.Bundle
-import androidx.fragment.app.Fragment
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import android.webkit.ValueCallback
+import androidx.fragment.app.Fragment
 import androidx.webkit.WebSettingsCompat
 import androidx.webkit.WebSettingsCompat.FORCE_DARK_OFF
 import androidx.webkit.WebSettingsCompat.FORCE_DARK_ON
 import androidx.webkit.WebViewFeature
+import com.ethosa.ktc.Constants
 import com.ethosa.ktc.Preferences
 import com.ethosa.ktc.college.ProCollege
 import com.ethosa.ktc.databinding.FragmentProCollegeBinding
@@ -24,6 +29,7 @@ class ProCollegeFragment : Fragment() {
 
     private lateinit var proCollege: ProCollege
     private lateinit var preferences: Preferences
+    var uploadMessage: ValueCallback<Array<Uri>>? = null
 
     override fun onCreateView(
         inflater: LayoutInflater,
@@ -60,6 +66,16 @@ class ProCollegeFragment : Fragment() {
         return binding.root
     }
 
+    @Deprecated("Deprecated in Java")
+    override fun onActivityResult(requestCode: Int, resultCode: Int, intent: Intent?) {
+        if (requestCode == Constants.FILECHOOSER_RESULTCODE) {
+            if (null == uploadMessage) return
+            val result = if (intent == null || resultCode != RESULT_OK) null else intent.data
+            uploadMessage?.onReceiveValue(arrayOf(result!!))
+            uploadMessage = null
+        }
+    }
+
     /**
      * Authorizes in the ProCollege
      */