पर SQLite डेटाबेस मैं एसडी कार्ड पर एक एसक्लाइट डेटाबेस बनाना चाहता हूं (उपयोगकर्ता के आंतरिक भंडारण का उपयोग नहीं करना चाहता)। मैं OpenHelper पैटर्न से परिचित हूँ:एसडी कार्ड
public DatabaseFoo(Context context) {
OpenHelper openHelper = new OpenHelper(context);
mDb = openHelper.getWritableDatabase();
}
private static class OpenHelper extends SQLiteOpenHelper {
public OpenHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
...
तो
हम एसडी कार्ड पर बनाना चाहते हैं, मुझे लगता है कि बजाय हम उपयोग करने के लिए:
public static SQLiteDatabase openOrCreateDatabase (String path,
SQLiteDatabase.CursorFactory factory);
लेकिन क्या "फैक्टरी" तर्क है माना जाता है, किस कारखाने का उपयोग किया जाना चाहिए?
इसके अलावा एक सा क्या होता अगर उपयोगकर्ता एसडी कार्ड को हटा जबकि मेरी ऐप्स उपयोग किए जाने के बारे में चिंतित ..
धन्यवाद
या तो आवेदन या एक कस्टम ContextWrapper काम नहीं करता है में 'getDatabasePath' ओवरराइड में अनुमति जोड़ें। खुले सहायक स्रोत कोड को पढ़ते हुए, मैंने देखा कि विधि कभी नहीं कहा जाता है, और इसके बजाय यह 'mContext.openOrCreateDatabase'' को कॉल करता है जो डीबी को डिफ़ॉल्ट आंतरिक संग्रहण में बनाता है। तो इस विधि को भी ओवरराइड किया जाना चाहिए। –
[यहां] (http://stackoverflow.com/questions/5332328/sqliteopenhelper-problem-with-fully-qualified-db-path-name/9168969#9168969) आप अधिलेखित getDatabasePath और openOrCreateDatabase का काम करने का एक उदाहरण उदाहरण पा सकते हैं जो काम करता है एंड्रॉइड 2.2 पर। और एंड्रॉइड 4.4 – k3b