2016-04-11 8 views
7

मैं Xamarin.Android का उपयोग कर रहा हूं और मैं एसडी कार्ड में .txt फ़ाइल सहेजना चाहता हूं।Xamarin एंड्रॉइड टेक्स्ट फ़ाइल सहेजें

System.UnauthorizedAccessException: Access to the path "/mnt/sdcard/iootext.txt" is denied.

मैं प्रकट करने के लिए निम्न को शामिल किया है::

private void SavetoSd() 
    { 
     var sdCardPath = Android.OS.Environment.ExternalStorageDirectory.Path; 
     var filePath = System.IO.Path.Combine(sdCardPath, "iootext.txt"); 
     if (!System.IO.File.Exists(filePath)) 
     { 
      using(System.IO.StreamWriter write = new System.IO.StreamWriter(filePath,true)) 
      { 
       write.Write(etSipServer.ToString()); 
      } 
     }  
    } 

हालांकि, मैं निम्न त्रुटि प्राप्त:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

कैसे कर सकते हैं मैं यहाँ कोड है कि मैं का उपयोग कर रहा है त्रुटि ठीक करें?

+0

आपने क्या प्रयास किया है? शायद डीआईआर लिखने योग्य नहीं है (लिखने योग्य बिट सेट नहीं है) या पूरे एसडी को केवल पढ़ने के लिए आरोहित किया जाता है। –

+0

यदि आपने बाद में अनुमतियां जोड़ दी हैं, तो अपने डिवाइस पर ऐप को अनइंस्टॉल करने का प्रयास करें, प्रोजेक्ट को साफ करें और इसे पुनर्निर्माण करें। कभी-कभी वे सिंक से बाहर हो जाते हैं, क्योंकि बिल्ड प्रक्रिया अनुकूलित करने का प्रयास करती है :) –

+0

मैंने अनइंस्टॉल किया लेकिन इससे मदद नहीं मिली:/ – Wuhu

उत्तर

2

यदि आप एंड्रॉइड 6.0+ पर हैं तो आपको अनुमतियों के लिए रनटाइम चेक करने की आवश्यकता होगी। यह बहुत की तरह किया जा सकता है: इस पर

if ((CheckSelfPermission(Permission.ReadExternalStorage) == (int)Permission.Granted) && 
    (CheckSelfPermission(Permission.WriteExternalStorage) == (int)Permission.Granted)) 

अधिक जानकारी एंड्रॉयड प्रलेखन here में पाया जा सकता।

+1

पर चलता हूं मैं 4.0.3 एपी 15 पर चलता हूं – Wuhu

0

यदि फ़ाइल पहले मौजूद नहीं है, तो पूर्ण पथ प्राप्त करने और इसमें अपना डेटा लिखने से पहले।

 Java.IO.File sdCard = Android.OS.Environment.ExternalStorageDirectory; 
    Java.IO.File dir = new Java.IO.File (sdCard.AbsolutePath + "/MyFolder"); 
    dir.Mkdirs(); 
    Java.IO.File file = new Java.IO.File (dir,"iootext.txt"); 
     if (!file.Exists()) { 
      file.CreateNewFile(); 
      file.Mkdir(); 
      FileWriter writer = new FileWriter (file); 
      // Writes the content to the file 
      writer.Write (jsonData); 
      writer.Flush(); 
      writer.Close(); 
     } 
0

मैं एक ही समस्या हो रही थी और घंटे की जोड़ी बिताने के बाद, मैंने पाया कि अगर आप एसडीके से अधिक 23, Android संस्करण 6 से अधिक पर चल रहे हैं, तो आप उपयोगकर्ता के लिए उपयोग अनुरोध को लागू करना चाहिए। कृपया this लिंक पर अधिक जानकारी यहां खोजें

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