2012-10-31 2 views
2

Android 프로그램을 작성하여 입력을 허용하고 데이터를 내 전화기의 내부 저장소에있는 파일에 쓰려고합니다. 에뮬레이터에서 프로그램을 실행하면 예상대로 파일이 만들어 지지만 내 전화에서이 파일을 실행하면 파일이 만들어지지 않은 것 같습니다. 나는이 사이트에서 둘러 보았고 어디서나 내 문제에 대한 해결책을 찾지 못하는 것 같다. (비슷한 몇 가지 비슷한 것들, 그러나 나를 위해 일한 것은 아무것도 없다.) 나는 너희들이 내게 내가 무엇을 조언 할 수 있기를 희망했다. 잘못하고있어.안드로이드 프로그램이 에뮬레이터에 쓰지만 전화는 안됩니다.

에뮬레이터에
FileOutputStream fos = null; 
String x = "Sample String"; 
    try{ 
      fos = openFileOutput("answers.txt", MODE_PRIVATE); 
      fos.write(x.getBytes()); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     }  

    try { 
      fos.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
    } 

, 나는 "데이터/데이터/com.example.helloandroid/파일/answers.txt로"에서 DDMS에서 파일을 찾을 수 있습니다. 전화에서 DDMS의 데이터 폴더를 열려고하면 빈 디렉터리임을 나타냅니다. 이미 내 매니페스트에이 줄을 추가했습니다.

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

내가 잘못하고있는 것 같지 않아 보입니다. 도움에 미리 감사드립니다, 그것은 고맙게 생각합니다.

+1

뿌리가 있지 않는 한 휴대 전화의 내부 디렉토리에 액세스 할 수 없습니다. – Wenhui

답변

0

코드는 훌륭하지만 Eclipse의 DDMS에는/data/data가있는 내부 저장소에 대한 적절한 액세스 권한이 없다고하는 사람들도 있습니다. http://developer.android.com/guide/topics/data/data-storage.html

다른 유형의 Android 저장 장치에 대한 참조는 액세스 할 수있는 한 가지 방법은 기기를 루트하는 것입니다.

또 다른 방법은 userdebug 빌드를 설치하는 것입니다.

그러나 가장 쉬운 방법은 문서화되지 않은 run-as 옵션을 사용하여 adb입니다. 이렇게하면 내부 저장소에 있더라도 앱이 소유 한 파일에 액세스 할 수 있습니다. 또한 명령 줄에서,

adb shell run-as com.example.helloandroid ls -l /data/data/com.example.helloandroid/files/ 

는 특정 파일의 내용을 얻을 입력하려면 :

당신이 생성되는에 관심이있는 파일, 명령 줄에 입력되었는지 확인하려면

adb shell run-as com.example.helloandroid cat /data/data/com.example.helloandroid/files/answers.txt 
+0

명확한 답변과 예제를 보내 주셔서 감사합니다! –

0

모든 것이 코드와 동일합니다. 휴대 전화에서 파일을 볼 수없는 유일한 이유는 다음과 같습니다. 귀하의 전화는 뿌리가 아닙니다! 전화를 뿌린 다음 RootExplorer (또는 다른 응용 프로그램)을 사용하여 에뮬레이터와 동일한 디렉토리에 결과를 표시하십시오! 이 옆에 왜 텍스트를 인쇄하지 않습니까? fos.close() 이후에 파일이 생성되도록하려면 bufferReader를 추가하고 데이터를 String에 넣은 다음 인쇄하십시오! LogCat에서 결과를 볼 수 있습니다.

관련 문제