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;
}
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
@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
v4.2.'Cordova-eklenti-dosyası' nın 0'ı çıktı - bu sürüme yükseltme sorunu çözdü! Tekrar teşekkürler! – finchie