feat: 添加自动填充阻止功能,优化用户隐私保护
This commit is contained in:
@@ -13,6 +13,8 @@ import android.os.Build
|
||||
import android.provider.MediaStore
|
||||
import android.util.Base64
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.content.FileProvider
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
import org.conscrypt.Conscrypt
|
||||
@@ -41,6 +43,12 @@ class MainActivity : FlutterActivity() {
|
||||
Log.w(TAG, "Conscrypt provider install failed: ${e.message}")
|
||||
}
|
||||
super.onCreate(savedInstanceState)
|
||||
installAutofillBlocker()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
disableAutofillForCurrentWindow()
|
||||
}
|
||||
|
||||
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
|
||||
@@ -264,6 +272,36 @@ class MainActivity : FlutterActivity() {
|
||||
)
|
||||
}
|
||||
|
||||
private fun installAutofillBlocker() {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
|
||||
return
|
||||
}
|
||||
|
||||
disableAutofillForCurrentWindow()
|
||||
window.decorView.viewTreeObserver.addOnGlobalLayoutListener {
|
||||
disableAutofillForCurrentWindow()
|
||||
}
|
||||
}
|
||||
|
||||
private fun disableAutofillForCurrentWindow() {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
|
||||
return
|
||||
}
|
||||
disableAutofill(window.decorView)
|
||||
}
|
||||
|
||||
private fun disableAutofill(view: View) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
view.importantForAutofill = View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS
|
||||
}
|
||||
|
||||
if (view is ViewGroup) {
|
||||
for (index in 0 until view.childCount) {
|
||||
disableAutofill(view.getChildAt(index))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun normalizeMimeTypes(acceptTypes: List<String>): List<String> {
|
||||
val mimeTypes = linkedSetOf<String>()
|
||||
acceptTypes
|
||||
|
||||
Reference in New Issue
Block a user