解决方法
更新16/02/2016
Phonegap现在建立supports API 23 – hoooray!
或者如果你在本地建立,只需要Cordova / Phonegap CLI 6,默认情况下你会得到cordova-android @ 5平台.
原始答案
目前,这肯定是可以使用Cordova / Phonegap CLI,但Phonegap Build尚不支持API 23(Android 6.0 / Marshmallow).
首先,您需要使用Android平台的v5.0.0(或更高版本),它使用API 23.
截至今天,默认版本为4.1.1(使用API 22),因此您需要在添加平台时明确指定版本:
cordova platform add android@5.0.0 phonegap platform add android@5.0.0
核心插件本身正在升级,以支持请求适当的Android 6运行时权限.因此,您需要直接从GitHub repos的主分支安装“出血边缘”版本,而不是通过npm插件注册表.例如,使用:
cordova plugin add https://github.com/apache/cordova-plugin-file
这应该让你的版本4.0.1-dev.
不是npm发布版本:
cordova plugin add cordova-plugin-file
这将让你v3.0.0
请注意,主分支上的版本不是发行版,因此可能包含错误.
所以替代方案(我选择的)是继续使用插件的发行版本(尚不支持请求Android运行时权限),但是使用cordova-diagnostic-plugin请求相应的核心插件需要的Android运行时权限在尝试使用核心插件API之前.
例如,要使用位置插件,请通过npm继续使用发行版本:
cordova plugin add cordova-plugin-geolocation
但是在请求位置之前,请确保已使用诊断插件授予运行时权限:
function requestLocation(){ navigator.geolocation.getCurrentPosition(onSuccess,onError,options); } cordova.plugins.diagnostic.getLocationAuthorizationStatus(function(status){ if(status == "GRANTED"){ requestLocation(); }else{ cordova.plugins.diagnostic.requestLocationAuthorization(function(status){ if(status == "GRANTED"){ requestLocation(); }else{ // Handle other cases } },function(error){ console.error(error); }); } },onError);