2016-04-11 22 views
7

私はXamarin.Androidを使用していますので、.txtファイルをSDカードに保存します。ここで私が使用していたコードされていますXamarin androidはテキストファイルを保存します

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()); 
      } 
     }  
    } 

は、しかし、私は次のエラーが表示されます

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

私はマニフェストに以下を追加しました:

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

どのように私ができますエラーを修正しますか?

+0

何を試しましたか?おそらくdirは書き込み可能ではなく(書き込み可能ビットが設定されていない)、またはSD全体が読み取り専用でマウントされている可能性があります。 –

+0

後でアクセス許可を追加した場合は、デバイスでアプリをアンインストールし、プロジェクトをクリーンアップして再構築してみてください。ビルドプロセスが最適化しようとすると、同期が外れることがあります。 –

+0

私はuninstaledですが、それは助けにはなりません:/ – Wuhu

答えて

2

Android 6.0以上の場合は、アクセス許可のランタイムチェックを実行する必要があります。これには、同様に行うことができます。この上

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

詳しい情報は、Androidのドキュメントhereで見つけることができます。

+1

私は4.0.3 ap15で動く – 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よりも高いSDK、6よりも高いアンドロイドのバージョンで実行されている場合、ユーザーへのアクセス要求を実装する必要があることを発見しました。 thisに関する詳しい情報はこちら

関連する問題