Android Q: Kapsamlı depolamada SQLite veritabanı


13

Android Q'da yeni Kapsamlı depolama özelliği sunuldu :

Android 10'u (API seviye 29) ve daha üstünü hedefleyen uygulamalara, varsayılan olarak harici depolama alanına veya kapsamlı depolama alanına kapsamlı erişim verilir. Bu tür uygulamaların yalnızca harici depolama alanındaki uygulamaya özgü dizinin yanı sıra uygulamanın oluşturduğu belirli medya türlerine erişimi vardır.

Harici depolamada SQLite veritabanı oluşturan uygulamam var, böylece uygulama kaldırıldığında veritabanı hala canlı ve daha sonra kurtarma olarak kullanılabilir veya Android cihaz dışında kullanılabilir (PC'de diyelim)

Android Q ile aynı etkiyi nasıl elde etmeliyim? Daha kesin olarak, veritabanı harici genel dizinde depolanırsa - bu veritabanını standart kullanarak nasıl okuyabilirim SQLiteOpenHelper?


En azından SQLite çerçevesiyle veya SQLite AndroidX API'sini (Room tarafından kullanılan) destekleyemezsiniz. Özel derlenmiş bir SQLite kitaplığı ve belki de bir dosya tanımlayıcı kullanarak bazı belirsiz çözümü göz ardı edemiyorum.
CommonsWare

Hayır hayır. noo-oooo-oooo! İnanamıyorum, genel dizine yerleştirilmiş SQLite veritabanını kullanmanın bir yolu olmalı ...
Barmaley Red Star

Uygulamanızı başlattığınızda ve kapattığınızda veritabanı dosyasının bir kopyasını oluşturabilirsiniz. Medya deposunu kullanarak izne ihtiyacınız yoktur.
blackapps

@blackapps, eminim ben de bu seçeneği anlıyorum, ama ben de başka bir yaklaşım var seviniriz: harici depolama SQLite veritabanına doğrudan erişim
Barmaley Red Star

Otomatik Yedekleme veritabanı dosya kurtarma için kullanılabilir.
sanat

Yanıtlar:


3

Çözümü dokümanlardan kullanmayı deneyebilirsiniz:
https://developer.android.com/training/data-storage/compatibility

  • Android 9'u (API seviye 28) veya daha düşük bir sürümü hedefleyin.
  • Android 10 (API düzeyi 29) veya daha hedefliyorsanız, değerini ayarlamak requestLegacyExternalStorageiçin trueuygulamanızın manifest dosyasında:
<manifest ... >
    <!-- This attribute is "false" by default on apps targeting Android 10 or higher. -->
    <application android:requestLegacyExternalStorage="true" ... >
    ...
    </application>
</manifest>

Öyle görünüyor ki, en iyi çözüm, ancak başka bir çözüm bulmaktan memnuniyet duyarım. Sadece biraz zamanın android:requestLegacyExternalStoragekaybolacağından korkuyorum ...
Barmaley Red Star

Anladığım kadarıyla ortadan kaybolmak hakkında çok fazla beklemeyeceğiz. Scoped Storage will be required in next year’s major platform release for all apps, independent of target SDK level. Android Q Kapsamlı Depolama Alanı: En İyi Uygulamalar ve Güncellemeler
Merov
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.