Итак, у меня есть веб-просмотр, который я хочу показать. внутри веб-камеры доступ должен быть предоставлен пользователю.
так что с помощью пользовательской вкладки Chrome это позаботится обо мне, и сам Chrome запросит у пользователя разрешение на использование камеры точно так же, как в Интернете.
Теперь моя проблема в том, что я хочу справиться с падением, если Chrome не установлен.
поэтому я сделал запасной веб-просмотр. проблема в том, что я не знаю, как предоставить пользователю разрешение, когда дело доходит до класса webviewClient () (НЕ класс WebChromeClient ())
если мы проверим WebChromeClient, то увидим, что у него есть метод для переопределения для обработки запроса: onPermissionRequest (...)
но я ничего не вижу для webviewclient. вот что у меня есть:
class CustomFallBackWebViewActivity CustomTabsHelper.CustomTabFallback {
override fun openUri(context: Context?, uri: Uri?) {
val i = Intent(context, CustomFallBackWebViewActivity::class.java)
i.putExtra(WebViewActivity.EXTRA_URL, uri.toString())
context?.startActivity(i)
}
@Inject
lateinit var permissionManager: PermissionManager
override fun onCreate(savedInstanceState: Bundle?) {
(applicationContext as MyApplication).appComponent.inject(this)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_fallback_webview)
val url = intent.extras?.getString(WebViewActivity.EXTRA_URL)
url?.let { showWebView(url) }
}
override fun showWebView(url: String) {
webView.webChromeClient = FallBackWebChromeClient()
webView.webViewClient = WebViewClient() //WHAT SHOULD I OVERRIDE HERE TO perform the permission handling incase chrome is not stalled i assume this is used
webView.loadUrl(url)
webView.settings.javaScriptEnabled = true
}
//i assume the below class gets called only if chrome is installed , right ?
inner class FallBackWebChromeClient : WebChromeClient() {
//this is NEVER called when using webViewClient()...
override fun onPermissionRequest(request: PermissionRequest?) {
//super.onPermissionRequest(request)
permissionManager.requestCameraPermission(this@CustomFallBackWebViewActivity) //show the permission screen myself (is there any other way ?)
}
override fun onPermissionRequestCanceled(request: PermissionRequest?) {
super.onPermissionRequestCanceled(request)
}
}
}
если это вообще имеет значение, вот как я его использую:
CustomTabsIntent customTabsIntent = new CustomTabsIntent.Builder()
.addDefaultShareMenuItem()
.setToolbarColor(this.getResources().getColor(R.color.white))
.enableUrlBarHiding()
.setShowTitle(true)
.build();
// This is optional but recommended, pre-warming info
CustomTabsHelper.addKeepAliveExtra(getActivity(), customTabsIntent.intent);
CustomTabsHelper.openCustomTab(getActivity(), customTabsIntent,
Uri.parse(url),
new CustomFallBackWebViewActivity());