2011-01-02 15 views
10

विफल रहता है मुझे एक अजीब समस्या है जो मैंने पार किया है। मेरा ऐप एसडी कार्ड में एक साधारण टेक्स्टफाइल लिख सकता है और कभी-कभी यह कुछ लोगों के लिए काम करता है लेकिन दूसरों के लिए नहीं और मुझे नहीं पता कि क्यों।एसडी कार्ड में पाठ फ़ाइल लिखना

कुछ लोगों के लिए, अगर वे फ़ाइल और 0 में ... जैसे कुछ वर्ण डालते हैं तो यह बल बंद हो जाता है। मैं इसे पुन: पेश नहीं कर सकता क्योंकि मुझे कोई परेशानी नहीं है लेकिन यह वह कोड है जो फ़ाइल लेखन को संभालता है। क्या कोई ऐसा कुछ सोच सकता है जो समस्याओं का कारण बन सकता है या ऐसा करने के लिए बेहतर तरीका हो सकता है?

public void generateNoteOnSD(String sFileName, String sBody) 
{ 
    try 
    { 
     File root = new File(Environment.getExternalStorageDirectory(), "Notes"); 
     if (!root.exists()) 
     { 
      root.mkdirs(); 
     } 

     File gpxfile = new File(root, sFileName); 
     FileWriter writer = new FileWriter(gpxfile); 
     writer.append(sBody); 
     writer.flush(); 
     writer.close(); 

     Toast.makeText(this, "Saved", Toast.LENGTH_SHORT).show(); 
    } 
    catch(IOException e) 
    { 
     e.printStackTrace(); 
     importError = e.getMessage(); 
     iError(); 
    } 
} 
+0

है एंड्रॉयड फोन अपने एक निहित या गैर जड़ें फोन का उपयोग कर? –

उत्तर

6

क्या आप जांच रहे हैं कि बाहरी संग्रहण लिखने योग्य है? तो का उपयोग कर ...

Environment.getExternalStorageState() 

नहीं की कोशिश यह आपको पता चलेगा कि एसडी कार्ड लगाया गया है और आप भी अगर यह लिखने योग्य है देख सकते हैं। इस बिंदु पर सुझाव देने के बारे में मैं सोच सकता हूं।

0

मैं आमतौर पर FileWriter के बजाय PrintWriter का उपयोग करता हूं। मुझे नहीं पता कि यह आपके मुद्दे को हल करेगा या नहीं, लेकिन यह एक उच्च स्तर का है, इसलिए यह एक साधारण फ़ाइलवाइटर की तुलना में अधिक चीजों का ख्याल रख सकता है।

15

आप डी एसडीकार्ड राज्य की जांच के लिए इस विधि का उपयोग कर सकते हैं। आपके लिए टोस्ट संवाद बदलें:

** MEDIA_MOUNTED_READ_ONLY के साथ परवाह करें। कोई जरूरत में SDCard में लिखने और मैं वापस सच **

public static Boolean comprobarSDCard(Context mContext) { 
    String auxSDCardStatus = Environment.getExternalStorageState(); 

    if (auxSDCardStatus.equals(Environment.MEDIA_MOUNTED)) 
     return true; 
    else if (auxSDCardStatus.equals(Environment.MEDIA_MOUNTED_READ_ONLY)) { 
     Toast.makeText(
       mContext, 
       "Warning, the SDCard it's only in read mode.\nthis does not result in malfunction" 
         + " of the read aplication", Toast.LENGTH_LONG) 
       .show(); 
     return true; 
    } else if (auxSDCardStatus.equals(Environment.MEDIA_NOFS)) { 
     Toast.makeText(
       mContext, 
       "Error, the SDCard can be used, it has not a corret format or " 
         + "is not formated.", Toast.LENGTH_LONG) 
       .show(); 
     return false; 
    } else if (auxSDCardStatus.equals(Environment.MEDIA_REMOVED)) { 
     Toast.makeText(
       mContext, 
       "Error, the SDCard is not found, to use the reader you need " 
         + "insert a SDCard on the device.", 
       Toast.LENGTH_LONG).show(); 
     return false; 
    } else if (auxSDCardStatus.equals(Environment.MEDIA_SHARED)) { 
     Toast.makeText(
       mContext, 
       "Error, the SDCard is not mounted beacuse is using " 
         + "connected by USB. Plug out and try again.", 
       Toast.LENGTH_LONG).show(); 
     return false; 
    } else if (auxSDCardStatus.equals(Environment.MEDIA_UNMOUNTABLE)) { 
     Toast.makeText(
       mContext, 
       "Error, the SDCard cant be mounted.\nThe may be happend when the SDCard is corrupted " 
         + "or crashed.", Toast.LENGTH_LONG).show(); 
     return false; 
    } else if (auxSDCardStatus.equals(Environment.MEDIA_UNMOUNTED)) { 
     Toast.makeText(
       mContext, 
       "Error, the SDCArd is on the device but is not mounted." 
         + "Mount it before use the app.", 
       Toast.LENGTH_LONG).show(); 
     return false; 
    } 

    return true; 
} 
+0

@Aracem ... क्या आप कृपया अपने कोड में पोस्ट की गई अंग्रेजी भाषा में तारों को अपडेट कर सकते हैं, मुझे उनको नहीं मिला, धन्यवाद – swiftBoy

+0

@RDC हो गया! त्वरित अनुवाद के लिए खेद है – Aracem

+0

@Aracem .. हाँ! धन्यवाद :) – swiftBoy

3

सभी साथी newbies वहाँ USB के माध्यम से एक वास्तविक डिवाइस पर डीबगिंग के लिए: मत भूलना अपने देव पीसी से USB केबल को अनप्लग करने के लिए, मैं की तरह किया। जब यूएसबी कनेक्ट होता है तो एसडी कार्ड अनुपलब्ध होता है। हैप्पी फाइल लेखन ...

यह सभी फोन/रोम बिल्डों पर सही नहीं है। सीएमओडी 7 और एमआईयूआई रोम दोनों आपको यह सेट करने की अनुमति देते हैं कि एसडी कार्ड घुड़सवार है या पीसी में प्लग इन होने पर नहीं, ऊपर दी गई सेटिंग्स के आधार पर उपरोक्त सत्य हो सकता है। जांच करने के लिए सबसे अच्छा।

+0

मेरे एचटीसी वाइल्डफायर पर, मैं इसे प्लग इन करता हूं, लेकिन केवल "चार्ज केवल" मोड का चयन करें और मेरा एसडी कार्ड लिखने योग्य के रूप में माउंट करता है। एक संक्षिप्त पुष्टि संदेश "एसडी कार्ड तैयार करना .." या कुछ ऐसे के लिए देखें –

5

मुझे पता चला कि मेरे मामले में, मैं मैनिफेस्ट फ़ाइल में <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> जोड़ना अनुपलब्ध था।

चीयर्स,

Wahib

संबंधित मुद्दे