2015-04-21 17 views
8

Belge Erişim Çerçevemi, bulut depolama erişim uygulamamla bütünleştiriyorum. this belgelerini kullanma Dosyaya erişebildiğim ve onu geri alabildiğim (bunu kontrol etmek için yalnızca Gmail uygulamasının ek işlevini kullanıyorum).Android'de Depolama Erişimi Çerçevesini kullanarak dosya kaydetme

Şimdi (doğrudan bulut depolama uygulama aracılığıyla dosyayı kaydedin) aynı yöntemi kullanarak dosyayı kaydetmek için nasıl bulmaya çalışıyorum ve aşağıdaki değişiklikleri yaptık: çağrı getRoots için

,

row.add(Root.COLUMN_FLAGS, Root.FLAG_SUPPORTS_CREATE); 

ve createDocument yöntemini de geçersiz kıldım.

Örnek kod ya da bunun nasıl yapılacağına dair belgeler konusunda pek fazla şey göremiyorum. Ayrıca, "Fotoğraflar" uygulaması gibi bir uygulama grubunun farklı bir yöntem kullanan "Paylaşım" düğmesine sahip olduğunu da görüyorum (günlükler miniShareActivity'i gösteriyor) ve uyguladığımda görünmüyor (Farklı bir dosya paylaşım mekanizması kullanıyor gibi görünüyor))

Ben dosyayı depolamak için SAF nasıl kullanılır

  1. hakkında bilgi arıyorum (herhangi bir örnek dosyası) belgelerine büyük ya işaretçiler olacak. Kullanıcının, klasöre gitmek ve dosyayı depolamak için seçici arabirimini kullanmasına izin vereceğini varsayıyorum.

  2. Uygulamayı, uygulamaya (uygulama) aktarmak için uygulamaların "Minishare etkinliği" listesinde nasıl görüneceği (Bu bir seçici arabirim sağlamaz gibi görünüyor, ancak yine de destek sağlamak istiyorum dosya

+0

https://developer.android.com/guide/topics/providers/document-provider.html adresindeki "Get a InputStream" ve "Yeni bir belge oluştur" örneklerine dayanan şüphe şudur: ikincisini yapın, sonra getContentResolver() gibi bir şey açın. openOutputStream (uri); Önemli bir nokta, bir Dosyaya oldukça benzer şekillerde sonucu okuyabileceğiniz ve yazabildiğiniz halde, her zaman mutlaka bir literal java.io dosyası elde etmenin herhangi bir yolu olmayacaktır. –

+0

Bu örnekler, istemci uygulamaları açısından bakıldığında, belge sağlayıcısı tarafı için başka hangi kurulumların gerektiğini görmeye çalışıyorum. İstemci ve sağlayıcının yan kodunu içeren bir örnek, – rydgaze

+0

olmalıdır. Bu size yardımcı olabilir: http://www.techotopia.com/index.php/An_Android_Storage_Access_Framework_Example#Creating_a_New_Storage_File – powder366

cevap

0

başka uygulamalarda bahsettiğiniz Paylaş düğmesi muhtemelen oldukça Depolama Erişim Çerçevesi ile tanıtıldı ACTION_CREATE_DOCUMENT daha niyet eylem olarak ACTION_SEND kullanır) varsayılan bir konuma kaydedilir.

ACTION_CREATE_DOCUMENT yalnızca KitKat'ta tanıtıldığı ve daha eski uygulamaların farkında olmayabileceği için, ikisini de desteklemek istersiniz. Benzer şekilde, KitKat öncesi aygıtlarda okuma erişimi için ACTION_GET_CONTENT Intent eylemini de desteklemek isteyebilirsiniz (KitKat + üzerinde çalışırken ACTION_GET_CONTENT, SAF tarafından işlenir, ancak uygulamanızın bir KitKat aygıtında çalışırken hala ele alınması gerekir). AndroidManifest'inizdeki <intent-filter> s, tüm bu Niyet türleriyle eşleşecek şekilde ayarlanmış mı?

İlgili konular