Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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 Cordova插件中的请求权限不会提示用户_Android_Cordova_Ionic Framework_Cordova Plugins_Cordova 5.0.0 - Fatal编程技术网

Android Cordova插件中的请求权限不会提示用户

Android Cordova插件中的请求权限不会提示用户,android,cordova,ionic-framework,cordova-plugins,cordova-5.0.0,Android,Cordova,Ionic Framework,Cordova Plugins,Cordova 5.0.0,我正在尝试编写一个Cordova插件,为需要SYSTEM\u ALERT\u WINDOW许可的ionic hybrid应用程序提供一个类似Facebook聊天头的浮动图标 由于Android M Forward要求用户在应用程序第一次启动时授予权限,因此我尝试使用Cordova插件的Cordova.requestPermission(CordovaPlugin插件,int requestCode,String permission)方法提示用户授予权限(如中所示) 在第一次启动时,应用程序不会

我正在尝试编写一个Cordova插件,为需要SYSTEM\u ALERT\u WINDOW许可的ionic hybrid应用程序提供一个类似Facebook聊天头的浮动图标

由于Android M Forward要求用户在应用程序第一次启动时授予权限,因此我尝试使用Cordova插件的
Cordova.requestPermission(CordovaPlugin插件,int requestCode,String permission)
方法提示用户授予权限(如中所示)

在第一次启动时,应用程序不会提示权限请求活动,而是在日志中打印“权限被拒绝”

我是爱奥尼亚和科尔多瓦的新手,在花了几个小时的时间之后仍然无法解决这个问题。我们将非常感谢您的帮助


提前感谢。

似乎
系统警报窗口
是一种特殊情况,它有自己的权限请求机制,从API 23开始。这在报纸上有提到:

有几个权限的行为与普通权限和危险权限不同。系统警报窗口和写入设置特别敏感,因此大多数应用程序不应使用它们。如果应用程序需要这些权限之一,它必须在清单中声明该权限,并发送意图请求用户授权。系统通过向用户显示详细的管理屏幕来响应意图。 有关如何请求这些权限的详细信息,请参阅SYSTEM_ALERT_窗口和WRITE_SETTINGS参考条目

相应的报告说:

注意:如果应用程序的目标API级别为23或更高,则应用程序用户必须通过权限管理屏幕向应用程序明确授予此权限。 该应用程序通过发送带有操作权限的意图来请求用户批准。应用程序可以通过调用Settings.canDrawOverlays()检查是否具有此授权

因此,简而言之,您不能使用
cordova.requestPermission()
来请求
SYSTEM\u ALERT\u窗口
,您必须发送自定义意图:

cordova.getActivity().startActivity(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION));

我知道这与你的问题无关,但你是否打算利用任何机会使你的项目开源?
cordova.getActivity().startActivity(new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION));