2015-12-06 90 views

回答

9

UPDATE 16/02/2016

的PhoneGap現在建立supports API 23 - hoooray!

或者如果您在本地構建,只需Cordova/Phonegap CLI 6+,默認情況下您將獲得cordova-android @ 5 +平臺。

原來的答案

目前,這當然是可能的使用科爾多瓦/ PhoneGap的CLI,但Phonegap Build尚不支持API 23(在Android 6.0 /棉花糖)。

首先,你需要使用V5.0.0(或以上)的Android平臺,它採用API 23

截至今天,默認版本是4.1.1(使用API​​ 22),所以你需要添加平臺時明確指定版本:

cordova platform add [email protected] 
phonegap platform add [email protected] 

核心插件本身正在進行升級,以支持要求的適當的Android 6的運行權限的進程。因此,您需要直接從GitHub回購站的主分支安裝「最新版」版本,而不是通過npm插件註冊表。例如,使用:

cordova plugin add https://github.com/apache/cordova-plugin-file 

這應該讓你的版本4.0.1-dev。

不是故宮發行版:

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); 
+1

你大多是正確的,但不是從github添加插件,如你所說,它會安裝-dev版本,他應該安裝使用''''cordova插件發佈的最新版本添加cordova-plugin-file @ 4.0.0 --save''' – jcesarmobile

+0

@DaveAlden感謝您的回覆 –

+0

這真是太神奇了,謝謝。 – pushplaybang