2017-11-19 3 views
0

문자열을 가져 와서 JSONObject 형식으로 인코딩하고 SD의 JSON 파일에 써야하는 앱이 있습니다. 모든 부분을 쓰는 것과는 별개로 잘 작동하는 것처럼 보입니다. 내 MANIFEST에 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 명령을하고 난 내가 토스트 에서이 메시지가 버튼을 누르면 그 내 코드JSONObject to 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; 
    } 

의 "저장// 0importantemail.json 권한이 거부하지 에뮬레이트"그 불구하고 왜 어떤 생각을

+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=en –

+0

컴퓨터에서 볼 수있는 방법이 있습니까? – redberry

0

(안드로이드 6.0 이상)에는 런타임 권한을 부여해야합니다. this을 확인하십시오.

+0

그 도움이 안된다. – redberry