我有一个 WebView,加载的某些页面需要 GeolocationPermissions 的权限。为此,我覆盖了 onGeolocationPermissionsShowPrompt()。好的。
此外,我的应用程序以新权限模型的 SDK 23 (Android M) 为目标。因此,我需要检查用户是否授予了 ACCESS_FINE_LOCATION 权限,如果没有,则显示一个询问权限的对话框。
如何只为需要 GeolocationPermissions 的页面显示该对话框?
回调 onPermissionRequest(PermissionRequest request) 没有被调用。
安卓 list :
WebView 回调
@Override
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
callback.invoke(origin, true, true);
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
@Override
public void onPermissionRequest(PermissionRequest request) {
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){
requestLocationPermission();
else {
super.onPermissionRequest(request);
}
显示对话框权限
private void requestLocationPermission() {
if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)) {
new ADPDialogFragment(getActivity()) {
@Override
public String getTitre() {
return getString(R.string.mob_he_configuration_dialogue_message_titre);
}
@Override
public String getMessage() {
return getString(R.string.permission_location_rationale);
}
@Override
public void doPositiveClick() {
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);
}
}.show(getFragmentManager(), TAG);
} else {
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_LOCATION);
}
权限回调
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (requestCode == REQUEST_LOCATION) {
// BEGIN_INCLUDE(permission_result)
// Received permission result for camera permission.
Log.i(TAG, "Received response for Camera permission request.");
// Check if the only required permission has been granted
if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Camera permission has been granted, preview can be displayed
} else {
Toast.makeText(getActivity(), getString(R.string.permissions_not_granted), Toast.LENGTH_SHORT).show();
}
// END_INCLUDE(permission_result)
} else {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
}
感谢您的帮助!
最佳答案
您可以在调用 onGeolocationPermissionsShowPrompt 时请求用户的许可:
@Override
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED) {
mCallback = callback;
mOrigin = origin;
requestLocationPermission();
} else {
callback.invoke(origin, true, true);
}
}
以及当用户选择是否授予您权限时:
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions,
@NonNull int[] grantResults)
{
switch (requestCode) {
case REQUEST_LOCATION:
if (mCallback != null && mOrigin != null)
mCallback.invoke(mOrigin,
grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED,
false);
mCallback = null;
mOrigin = null;
break;
default:
super.onRequestPermissionsResult(requestCode, permissions,
grantResults);
}
}
关于安卓 M : System permission vs WebView location permission,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32659725/
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
我正在关注Hartl的railstutorial.org并已到达11.4.4:Imageuploadinproduction.我做了什么:注册亚马逊网络服务在AmazonIdentityandAccessManagement中,我创建了一个用户。用户创建成功。在AmazonS3中,我创建了一个新存储桶。设置新存储桶的权限:权限:本教程指示“授予上一步创建的用户读写权限”。但是,在存储桶的“权限”下,未提及新用户名。我只能在每个人、经过身份验证的用户、日志传送、我和亚马逊似乎根据我的名字+数字创建的用户名之间进行选择。我已经通过选择经过身份验证的用户并选中了上传/删除和查看权限的框(而不
我将服务器更新为ruby2.1.1,并使用Capistrano部署到我的服务器。但是,当我部署时,我收到各种错误。每次我玩我的部署代码时都会改变。以下是我当前遇到的问题。更新/新问题重新安装rvm和ruby后,我在部署时遇到了不同的问题。这是我当前的deploy.rb文件。require"bundler/capistrano"require"rvm/capistrano"set:rvm_type,:systemset:rvm_ruby_string,"ruby-2.1.1"require'bundler/capistrano'#Capistranoset:default_env
我正在尝试使用YouTubeAPIv3来更新和删除视频与OAuth2forauthentication通过google-api-client(0.6.4)Rubygem。但是,当我尝试执行这两个操作中的任何一个时,我看到以下错误消息:Google::APIClient::ClientError:InsufficientPermission奇怪的是:使用与update和delete完全相同的身份验证过程,我可以insert(上传)成功,没问题!所以,我不认为这是我的身份验证设置的问题,而是我代码中的其他地方。我的读写scope在所有这些操作中始终相同:https://www.google
当我使用rvmuse1.9.2时,我得到Railsv3.0.0:vikas@admin1-DL-H61MXEL:~$rvmuse1.9.2--defaultUsing/home/vikas/.rvm/gems/ruby-1.9.2-p320vikas@admin1-DL-H61MXEL:~$rails-vRails3.0.0当我使用rvmuse2.0.0时,我得到Railsv3.2.13:vikas@admin1-DL-H61MXEL:~$rvmuse2.0.0Using/home/vikas/.rvm/gems/ruby-2.0.0-p195vikas@admin1-DL-H61MX
我安装了JRuby和Gitforwindows。然后我使用RubyInstaller安装了Ruby2.3x64。然后我安装了x64devkit。我安装了jsongem,它运行正常。运行rake--version给我错误:bash:/c/Ruby23-x64/bin/rake:C:/Users/Justin/Projects/rubyinstaller/sandbox/ruby23_mingw/bin/ruby.exe:错误的解释器:权限被拒绝我的名字不是Justin,我的计算机或网络上没有叫Justin的用户,我什至没有任何叫Justin的friend。是什么导致了这个问题?
我正在尝试转储我的pgdb但遇到这些错误请建议pg_dump:[archiver(db)]queryfailed:ERROR:permissiondeniedforrelationaboutspg_dump:[archiver(db)]querywas:LOCKTABLEpublic.aboutsINACCESSSHAREMODE 最佳答案 您正在执行pg_dump的用户没有公共(public)模式的权限。如果允许则添加权限:GRANTUSAGEONSCHEMApublicTO;GRANTSELECTONALLTABLESINSCH
快捷目录前言一、涉及到的相关技术简介二、具体实现过程及踩坑杂谈1.安卓手机改造成linux系统实现方案2.改造后的手机Linux中软件的安装3.手机Linux中安装MySQL5.7踩坑实录4.手机Linux中安装软件的正确方法三、Linux服务器部署前后端分离项目流程1.前提准备(安装必要软件,搭建环境):2.前后端分离项目的详细部署过程:总结前言总体概述:本篇文章隶属于“手机改造服务器部署前后端分离项目”系列专栏,该专栏将分多个板块,每个板块独立成篇来详细记录:手机(安卓)改造成个人服务器(Linux)、Linux中安装软件、配置开发环境、部署JAVA+VUE+MySQL5.7前后端分离项目
每当我运行rails(或任何rails命令)时,我都会收到此错误_rails_command:2:权限被拒绝:bin/rails仅当我在一些旧的rails应用程序目录中时。在这些目录中,bundleexecrailsc命令有效,但rails甚至rails-v无效。背景:我将我的编码工作区保存在保管箱文件夹中。现在我最近安装了Manjaro,因此我从以前的操作系统下载的所有Rails应用程序我称之为旧Rails应用程序。简而言之:除了旧的Rails应用程序外,Rails在任何地方都可以正常工作。bundleexecrailsc工作正常。我试过的Ruby版本:2.0.0(rvm),2.1.
我在RedHat服务器上使用RubyonRails。当我试图生成一个Controller文件时,我得到了这个错误:[ec2-user@ip-172-31-22-128testApp4]$railsgeneratecontrollerwelcome/home/ec2-user/.rvm/gems/ruby-2.1.2/gems/spring-1.1.3/lib/spring/server.rb:22:in`initialize':Permissiondenied@rb_sysopen-/tmp/spring/fea371aaf9d69cfa58bd12f69b3f1bf6.pid(Err