我有一个简单的Android WebView应用程序,它显示了一个网站,具有"复制"按钮使用以下代码:-
navigator.clipboard.writeText('Text to be copied')
.then(() => {
console.log('Text copied to clipboard');
})
.catch(err => {
// This can happen if the user denies clipboard permissions:
console.error('Could not copy text: ', err);
});
这在所有桌面和移动浏览器以及iOS WebView应用程序中都有效,但我不能,它失败了,并在Android WebView应用程序中捕获了以下错误:DOM异常:写入权限被拒绝。
以下是应用程序中WebView的设置:
webView.settings.javaScriptEnabled = true
webView.settings.userAgentString = "EngageMobileApp Android"
webView.settings.builtInZoomControls = true
webView.settings.displayZoomControls = false
webView.settings.allowFileAccess = true
webView.settings.setAppCacheEnabled(true)
webView.settings.domStorageEnabled = true
webView.settings.loadWithOverviewMode = true
webView.settings.allowContentAccess = true
webView.settings.mediaPlaybackRequiresUserGesture = false
webView.settings.javaScriptCanOpenWindowsAutomatically = true
WebView.setWebContentsDebuggingEnabled(true)
以及清单中的设置权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
1条答案
按热度按时间h43kikqp1#
错误消息“DOMException:写入权限被拒绝”通常表示WebView不允许访问剪贴板。要在Android上的WebView中启用剪贴板访问,您需要向应用的清单文件添加android.permission.WRITE_EXTERNAL_STORAGE权限,然后在运行时明确授予该权限。
以下是如何在运行时请求权限:
您还需要处理权限请求的结果:
请注意,请求WRITE_EXTERNAL_STORAGE权限可能会提示用户授予与存储访问相关的其他权限,例如READ_EXTERNAL_STORAGE。