Android Q: स्कॉप्ड स्टोरेज में SQLite डेटाबेस


13

Android Q में नया स्कॉप्ड स्टोरेज फीचर पेश किया गया है , जो कहता है:

ऐसे ऐप्स जो एंड्रॉइड 10 (एपीआई स्तर 29) और उच्चतर को लक्षित करते हैं, उन्हें डिफ़ॉल्ट रूप से बाह्य संग्रहण, या स्कोप किए गए संग्रहण में प्रवेश दिया जाता है। इस तरह के एप्स की बाहरी संग्रहण पर केवल ऐप-विशिष्ट निर्देशिका तक पहुंच होती है, साथ ही विशिष्ट प्रकार के मीडिया भी हैं जो ऐप ने बनाए हैं।

मेरे पास मेरा ऐप है जो बाहरी स्टोरेज पर SQLite डेटाबेस बनाता है, जैसे कि जब ऐप डेटाबेस को अभी भी जीवित रखता है और बाद में पुनर्प्राप्ति के रूप में उपयोग किया जा सकता है या Android डिवाइस के बाहर उपयोग किया जा सकता है (जैसे पीसी में कहते हैं)

मुझे Android Q के साथ समान प्रभाव कैसे प्राप्त करना चाहिए? अधिक सटीक यदि डेटाबेस बाहरी सार्वजनिक निर्देशिका में संग्रहीत है - तो मैं मानक का उपयोग करके इस डेटाबेस को कैसे पढ़ सकता हूं SQLiteOpenHelper?


आप कम से कम फ्रेमवर्क SQLite या समर्थन SQLite AndroidX API (रूम द्वारा उपयोग किया गया) के साथ नहीं कर सकते। मैं कस्टम-संकलित SQLite लाइब्रेरी और शायद फ़ाइल डिस्क्रिप्टर का उपयोग करके कुछ अस्पष्ट समाधान को खारिज नहीं कर सकता।
कॉमन्सवेयर

नहीं नहीं। noo-oooo-oooo! मैं विश्वास नहीं कर सकता, सार्वजनिक निर्देशिका में रखा SQLite डेटाबेस का उपयोग करने के लिए एक रास्ता है ...
Barmaley लाल सितारा

अपने ऐप के स्टार्ट अप और शट डाउन पर आप डेटाबेस फाइल की कॉपी बना सकते हैं। मीडिया स्टोर का उपयोग करने के लिए आपको किसी अनुमति की आवश्यकता नहीं है।
ब्लैकपैक

@blackapps, निश्चित रूप से मैं इस विकल्प को समझता हूं, हालांकि मुझे खुशी के साथ-साथ अन्य दृष्टिकोण भी होगा: बाहरी भंडारण पर SQLite डेटाबेस तक सीधी पहुंच
बरमेली रेड स्टार

AutoBackup का उपयोग डेटाबेस फाइल रिकवरी के लिए किया जा सकता है।
आर्ट

जवाबों:


3

आप डॉक्स से समाधान का उपयोग करने की कोशिश कर सकते हैं:
https://developer.android.com/training/data-storage.com

  • Android 9 (API स्तर 28) या उससे कम लक्ष्य करें।
  • यदि आप Android 10 (एपीआई स्तर 29) या उससे अधिक का लक्ष्य requestLegacyExternalStorageरखते हैं true, तो अपने ऐप की मैनिफ़ेस्ट फ़ाइल में मान सेट करें :
<manifest ... >
    <!-- This attribute is "false" by default on apps targeting Android 10 or higher. -->
    <application android:requestLegacyExternalStorage="true" ... >
    ...
    </application>
</manifest>

ऐसा लगता है, यह सबसे अच्छा समाधान है, हालांकि मुझे अन्य समाधान खोजने में खुशी होगी। मुझे बस डर है कि कुछ समय android:requestLegacyExternalStorageगायब हो जाएगा ...
बरमेली रेड स्टार

गायब होने के बारे में जैसा कि मैंने समझा, हम बहुत लंबा इंतजार नहीं करेंगे। Scoped Storage will be required in next year’s major platform release for all apps, independent of target SDK levelएंड्रॉइड क्यू स्कॉप्ड स्टोरेज: बेस्ट प्रैक्टिस और अपडेट्स
मेरोव
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.