2016-04-04 18 views
3

Cordova 6.0'a, işletim platformunu (Nexus tabletleri) Android 4.4'ten Android 6'ya yükseltmekle aynı anda Cordova 6.0'a yükseltiyorum. Bunun bir parçası olarak dosya sistemi eklentisini cordova-plugin-file v0.2.5'ten v4'e yükselttim .1.1Android 6 Cordova uygulamasının dosya sistemine erişmeye çalışmadan önce kullanıcıya izin vermesini istediğinden nasıl emin olabilirim?

Uygulama, ilk çalıştırmada paylaşılan dosya sisteminde (file:///storage/emulated/0/) 10 klasörün bir dizin yapısı oluşturur. Ben uygulamasının yeni sürümünde kullanılan aynı konumu sağlamak için config.xml için aşağıdaki tercih ekledik:

<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" /> 
<preference name="AndroidPersistentFileLocation" value="Compatibility" /> 

Ben robot 6'da yeni bir izin modeli vardır farkındayım nerede kullanıcı Başvurunun istediği her izne ayrıca izin vermek zorundadır.

cihaz Android 6.0 (API düzeyi 23) veya daha çalışıyorsa, ve uygulamanın targetSdkVersion çalışma anında kullanıcıdan 23 veya daha yüksek, uygulama istekleri izinleri olduğunu. Android Developer documentation

için kullanıcı isteyen, benim uygulamasının yeni sürümü ilk çalıştırma sırasında beklenen gerçekleştirir olarak oluşturulan dizin yapısını oldu önceki bir sürümü yüklü (ve kaldırılan beri) vardı ve tabletlerin yüklendiğinde dosya sistemine erişim izni vermek. Ancak, daha önce hiç uygulama yüklü olmayan bir tablete (veya önceki bir sürüm tarafından oluşturulan dizin yapısını kaldırdığımda) yüklendiğinde, uygulama FileError.PATH_EXISTS_ERR hatasını atlayarak başarısız oluyor. Kullanıcının dosya sistemine beklenildiği gibi erişmesine izin vermesini istemez.

Başvuru inşa edildiğinde, üretilen AndroidManifest.xml gerekli izinleri özellik içeriyor olmadığını kontrol ettik:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Bulunduğum geçici çözüm, uygulamayı durdurmak Ayarlar gitmektir> Uygulamalar> BenimUygulamam > Uygulamayı tekrar çalıştırmadan önce İzinler ve "Depolama" iznini manuel olarak etkinleştirin. Ama gerçekten kullanıcılarımın bunu yapmasını istemiyorum!

Uygulamanın dosya sistemine gerçekten erişmeye çalışmadan önce kullanıcının gerekli izni vermesini istediğinden nasıl emin olabilirim? Android 6 (hatmi) yükselttikten sonra tam aynı sorunu karşı karşıya kalan

window.requestFileSystem(window.LocalFileSystem.PERSISTENT, 4000 * 1024 * 1024, gotFileSystem, errorHandler); 

function gotFileSystem(fileSystem) { 

    // store reference to file system 
    fs = fileSystem; 
} 

function createDir(directoryName) { 

    var directoryCreated = when.defer(); 

    fs.root.getDirectory(directoryName, { 
      create: true 
     }, function (dirEntry) {    
      directoryCreated.resolve(); 
     }, function(e) { 
      directoryCreated.reject(e); 
     } 
    ); 

    return directoryCreated.promise; 
} 

cevap

0

: Burada

bazıları benim kod örneklerdir. Cordova dosya eklentisi (v 4.1.1) Android Marshmallow ile izin sorunu var. Bu sorun yol dosya hatası ile sonuçlanan android dosya sisteminde klasörlerin oluşturulmasına izin vermez.

Bu sorun şimdi giderilmiştir. Bu çalışma yapmak için cordova dosya eklentisi github android src klasöründen son FileUtils.java çekmek zorunda kalabilirsiniz. Eklentiyi güncelledikten sonra, ilk kez dosya sistemine erişim, uygulama kullanıcıdan erişim izni ister. Sonraki istekler bundan sonra iyi çalışır. Bu konuda bilgi için Apache sorunu izleyicide CB-10798'i işaretleyin. Umarım

+0

Yardımınız için teşekkürler - Cordova-eklenti dosyasının bir sonraki sürümü ne zaman piyasaya sürüleceğini biliyor musunuz? – finchie

+0

@finchie, üzgünüm, bunun hakkında hiçbir fikrim yok. Ancak yine de bu sorunla ilgili FileUtils.java değişikliklerini şimdilik github ve geçici çözümlerden alabilirsiniz. – Gandhi

+0

v4.2.'Cordova-eklenti-dosyası' nın 0'ı çıktı - bu sürüme yükseltme sorunu çözdü! Tekrar teşekkürler! – finchie

İlgili konular