2017-11-19 5 views
0

文字列を取り込んでJSONObject形式にエンコードし、SDのJSONファイルに書き込む必要があるアプリがあります。それはすべての部分を書くこととは別に問題なく動作しているようです。私は私のマニフェストに<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />コマンドを持っていると私はトーストからこのメッセージが表示されます そのかかわらず、なぜ ないアイデアを、「ストレージ/エミュレート/ 0importantemail.json 許可が拒否されていない」ボタンを押すと、それはJSONObjectからJSONfileに書き込む

btn1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      // String lines[] = importantemail.split("\\r?\\n"); 
      // String firstLine = (lines[0]); 
      //String secondLine = (lines[1]); 
      // Toast.makeText(SignificantEmailActivity.this,firstLine + secondLine,Toast.LENGTH_SHORT).show();; 
      JSONObject jsonObject = makeJsonObject(); 
      try{ 
       Writer output = null; 
       File file = new File(Environment.getExternalStorageDirectory()+ "importantemail.json"); 
       if (!file.exists()) { 
        file.mkdirs(); 
       } 
       output = new BufferedWriter(new FileWriter(file)); 
       output.write(jsonObject.toString()); 
       output.close(); 
       Toast.makeText(getApplicationContext(), "Composition saved", Toast.LENGTH_LONG).show(); 

      } catch (Exception e) { 
       Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG).show(); 
      } 
      finish(); 


     } 
    }); 
    } 
    public JSONObject makeJsonObject() 
    { 
     JSONObject object = new JSONObject(); 
     try { 
      object.put("Message ID", id); 
      object.put("Sender",accountStr); 
      object.put("Subject",subj); 
      object.put("E-mail:",importantemail); 
     }catch (JSONException e) 
     { 
      e.printStackTrace(); 
     } 
     return object; 
    } 

私のコードです

+0

通常、このエラーは、マニフェストのWRITE_EXTERNAL _STORAGEの権限を持っていないため表示されます。https://developer.android.com/training/data-storage/files.html –

+0

こんにちは、申し訳ありませんが、それ。私は実際にそれを持っています – redberry

答えて

1

テスト済み、こんにちはいくつかの行を置き換えて、これで問題が解決されます。

JSONObject jsonObject = makeJsonObject(); 
    try{ 
     Writer output = null; 
     File file = new File(Environment.getExternalStorageDirectory(), "importantemail.json"); 
     if(file.isDirectory()){ 
      file.delete(); 
     } 
     if(!file.exists()){ 
      file.createNewFile(); 
     } 
     output = new BufferedWriter(new FileWriter(file)); 
     output.write(jsonObject.toString()); 
     output.close(); 
     Toast.makeText(getApplicationContext(), "Composition saved", Toast.LENGTH_LONG).show(); 

    } catch (Exception e) { 
     Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_LONG).show(); 
    } 
    finish(); 


} 
public JSONObject makeJsonObject() 
{ 
    JSONObject object = new JSONObject(); 
    try { 
     object.put("Message ID", 5); 
     object.put("Sender","test"); 
     object.put("Subject","test"); 
     object.put("E-mail:","test"); 
    }catch (JSONException e) 
    { 
     e.printStackTrace(); 
    } 
    return object; 
} 
+0

右、私はそれが動作すると思うが、ファイルを見つけることができません – redberry

+0

ファイルは、ルートディレクトリに格納されます。 ESファイルエクスプローラファイルマネージャを試してみてください。 https://play.google.com/store/apps/details?id=com.estrongs.android.pop&hl=ja –

+0

コンピューターで見る方法はありますか? – redberry

0

アンドロイドの6.0以降のバージョンでは、実行時のアクセス許可を与える必要があります。チェックthisを確認してください。

+0

その助けていない – redberry

関連する問題