Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android WebView-Android 6.0棉花糖中的运行时权限_Android_Webview_Permissions - Fatal编程技术网

Android WebView-Android 6.0棉花糖中的运行时权限

Android WebView-Android 6.0棉花糖中的运行时权限,android,webview,permissions,Android,Webview,Permissions,我有一个Android应用程序,大量使用Android的WebView。在6.0中添加了新的运行时权限后,在尝试处理某些权限请求时,这对我来说是一个挑战 我的AndroidManifest.xml具有android.permission.ACCESS\u rough\u LOCATION和android.permission.ACCESS\u FINE\u LOCATION权限集,因为在我的WebView中有一个页面使用谷歌地图并获取用户位置以供指示。我假设WebView会优雅地处理6.0用户的

我有一个Android应用程序,大量使用Android的WebView。在6.0中添加了新的运行时权限后,在尝试处理某些权限请求时,这对我来说是一个挑战

我的
AndroidManifest.xml
具有
android.permission.ACCESS\u rough\u LOCATION
android.permission.ACCESS\u FINE\u LOCATION
权限集,因为在我的WebView中有一个页面使用谷歌地图并获取用户位置以供指示。我假设WebView会优雅地处理6.0用户的权限请求,因为我不会在Android代码中调用任何获取用户位置的命令。iOS设备以同样的方式处理其运行时权限。所有获取位置的调用都是通过该页面JavaScript中的Google Maps API完成的

对于像导入联系人这样的东西,我的终端确实需要安卓代码,我可以请求他们在他们的应用程序中描述的权限。我在这里没有问题,因为我直接使用代码中的
WRITE\u CONTACTS
READ\u CONTACTS
权限。我上面描述的情况并非如此


对于使用Android分类为“危险”权限的Web视图,应该如何处理运行时权限?

我看不出有什么实质性区别。在这两种情况下,您都拥有清单中的权限。在这两种情况下,权限都是危险的。在这两种情况下,您都在使用API(
WebView
ContentResolver
),在用户执行
危险的
操作之前,您需要获得用户的请求和许可。在这种情况下,为什么
WebView
ContentResolver
会有任何不同?你是说我应该在WebView第一次实例化时请求它使用的所有权限吗?否则,我目前无法在使用时捕获请求(我认为这是添加运行时权限的目的)。我可以使用
shouldOverrideUrlLoading
来了解地图页面何时加载并请求权限。但我不认为添加这些权限需要这么大的更改。我将这一体验与iOS中的体验进行比较,我认为他们正试图实现这一点。“你是说我应该在WebView第一次实例化时请求它使用的所有权限吗?”——我将其表述为“在加载尝试使用位置API的网页之前”。“我相信这是添加运行时权限的目的”-IMHO,目的是不必请求应用程序可能不需要的权限,直到接近应用程序需要它们的时候。但是,根据流量的不同,这可能需要在安装后的第一次运行时询问它们(例如,Web浏览器,它不知道何时可能会获得发出位置请求的网页).这也是我对权限应该如何使用的解释-请求权限时更接近应用程序即将使用的时间,而不是应用程序首次安装的时间。我真的很感谢你的回应。谢谢你的帮助。我看不出有什么实质性的区别。在这两种情况下,您都拥有清单中的权限。在这两种情况下,权限都是危险的。在这两种情况下,您都在使用API(
WebView
ContentResolver
),在用户执行
危险的
操作之前,您需要获得用户的请求和许可。在这种情况下,为什么
WebView
ContentResolver
会有任何不同?你是说我应该在WebView第一次实例化时请求它使用的所有权限吗?否则,我目前无法在使用时捕获请求(我认为这是添加运行时权限的目的)。我可以使用
shouldOverrideUrlLoading
来了解地图页面何时加载并请求权限。但我不认为添加这些权限需要这么大的更改。我将这一体验与iOS中的体验进行比较,我认为他们正试图实现这一点。“你是说我应该在WebView第一次实例化时请求它使用的所有权限吗?”——我将其表述为“在加载尝试使用位置API的网页之前”。“我相信这是添加运行时权限的目的”-IMHO,目的是不必请求应用程序可能不需要的权限,直到接近应用程序需要它们的时候。但是,根据流量的不同,这可能需要在安装后的第一次运行时询问它们(例如,Web浏览器,它不知道何时可能会获得发出位置请求的网页).这也是我对权限应该如何使用的解释-请求权限时更接近应用程序即将使用的时间,而不是应用程序首次安装的时间。我真的很感谢你的回应。谢谢你的帮助。