2013-04-13 3 views
0

최근에 컴퓨터가 변경되어 ADT를 다시 설치해야했습니다. 그 이후로 가상 장치에서이 오류가 발생했습니다.open failed : 가상 장치에서 EACCES (Permission denied)가 발생했습니다.

로그 캣 :

04-13 07:50:00.232: E/MailApp(2000): Could not send email 
04-13 07:50:00.232: E/MailApp(2000): javax.mail.MessagingException: IOException while sending message; 
04-13 07:50:00.232: E/MailApp(2000): nested exception is: 
04-13 07:50:00.232: E/MailApp(2000): java.io.FileNotFoundException: /mnt/sdcard/csvname.csv: open failed: EACCES (Permission denied) 
04-13 07:50:00.232: E/MailApp(2000): at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:676) 
04-13 07:50:00.232: E/MailApp(2000): at javax.mail.Transport.send0(Transport.java:189) 
04-13 07:50:00.232: E/MailApp(2000): at javax.mail.Transport.send(Transport.java:118) 
04-13 07:50:00.232: E/MailApp(2000): at com.example.blueharvest.Mail.send(Mail.java:125) 
04-13 07:50:00.232: E/MailApp(2000): at com.example.blueharvest.ChargeActivity$6.onClick(ChargeActivity.java:213) 
04-13 07:50:00.232: E/MailApp(2000): at android.view.View.performClick(View.java:4204) 
04-13 07:50:00.232: E/MailApp(2000): at android.view.View$PerformClick.run(View.java:17355) 
04-13 07:50:00.232: E/MailApp(2000): at android.os.Handler.handleCallback(Handler.java:725) 
04-13 07:50:00.232: E/MailApp(2000): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-13 07:50:00.232: E/MailApp(2000): at android.os.Looper.loop(Looper.java:137) 
04-13 07:50:00.232: E/MailApp(2000): at android.app.ActivityThread.main(ActivityThread.java:5041) 
04-13 07:50:00.232: E/MailApp(2000): at java.lang.reflect.Method.invokeNative(Native Method) 
04-13 07:50:00.232: E/MailApp(2000): at java.lang.reflect.Method.invoke(Method.java:511) 
04-13 07:50:00.232: E/MailApp(2000): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
04-13 07:50:00.232: E/MailApp(2000): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
04-13 07:50:00.232: E/MailApp(2000): at dalvik.system.NativeStart.main(Native Method) 
04-13 07:50:00.232: E/MailApp(2000): Caused by: java.io.FileNotFoundException: /mnt/sdcard/csvname.csv: open failed: EACCES (Permission denied) 
04-13 07:50:00.232: E/MailApp(2000): at libcore.io.IoBridge.open(IoBridge.java:416) 
04-13 07:50:00.232: E/MailApp(2000): at java.io.FileInputStream.<init>(FileInputStream.java:78) 
04-13 07:50:00.232: E/MailApp(2000): at javax.activation.FileDataSource.getInputStream(FileDataSource.java:110) 
04-13 07:50:00.232: E/MailApp(2000): at javax.activation.DataHandler.writeTo(DataHandler.java:318) 
04-13 07:50:00.232: E/MailApp(2000): at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1403) 
04-13 07:50:00.232: E/MailApp(2000): at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:874) 
04-13 07:50:00.232: E/MailApp(2000): at javax.mail.internet.MimeMultipart.writeTo(MimeMultipart.java:444) 
04-13 07:50:00.232: E/MailApp(2000): at com.sun.mail.handlers.multipart_mixed.writeTo(multipart_mixed.java:102) 
04-13 07:50:00.232: E/MailApp(2000): at javax.activation.ObjectDataContentHandler.writeTo(DataHandler.java:897) 
04-13 07:50:00.232: E/MailApp(2000): at javax.activation.DataHandler.writeTo(DataHandler.java:330) 
04-13 07:50:00.232: E/MailApp(2000): at javax.mail.internet.MimeBodyPart.writeTo(MimeBodyPart.java:1403) 
04-13 07:50:00.232: E/MailApp(2000): at javax.mail.internet.MimeMessage.writeTo(MimeMessage.java:1745) 
04-13 07:50:00.232: E/MailApp(2000): at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:636) 
04-13 07:50:00.232: E/MailApp(2000): ... 15 more 
04-13 07:50:00.232: E/MailApp(2000): Caused by: libcore.io.ErrnoException: open failed: EACCES (Permission denied) 
04-13 07:50:00.232: E/MailApp(2000): at libcore.io.Posix.open(Native Method) 
04-13 07:50:00.232: E/MailApp(2000): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110) 
04-13 07:50:00.232: E/MailApp(2000): at libcore.io.IoBridge.open(IoBridge.java:400) 
04-13 07:50:00.232: E/MailApp(2000): ... 27 more 

매니페스트 :

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

코드 :

public void exportDb(Context context) { 

    SQLiteDatabase _db = this.getReadableDatabase(); 
    //File exportDir = new File(Environment.getExternalStorageDirectory().getPath(), ""); 
    File exportDir = getDir(context); 

    if (!exportDir.exists()) 
    { 
     exportDir.mkdirs(); 
    } 

    File file = new File(exportDir, "csvname.csv"); 
    try 
    { 
     file.createNewFile();    
     CSVWriter csvWrite = new CSVWriter(new FileWriter(file)); 
     SQLiteDatabase db = this.getReadableDatabase(); 
     Cursor curCSV = db.rawQuery("SELECT * FROM chrgData",null); 
     csvWrite.writeNext(curCSV.getColumnNames()); 
     while(curCSV.moveToNext()) 
     { 
      //Which column you want to export 
      String arrStr[] ={curCSV.getString(0),curCSV.getString(1), curCSV.getString(2), curCSV.getString(3), curCSV.getString(4)}; 
      csvWrite.writeNext(arrStr); 
     } 
     csvWrite.close(); 
     curCSV.close(); 
    } 
    catch(Exception sqlEx) 
    { 
     Log.e("MainActivity", sqlEx.getMessage(), sqlEx); 
    } 
    _db.close(); 
} 

public File getDir(Context context) { 
    File exportDir; 
    if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) { 
     exportDir = new File(android.os.Environment.getExternalStorageDirectory(),""); 
    } else { 
     exportDir = context.getCacheDir(); 
    }     
    return exportDir; 
} 

모든 모든 도움을 많이 감사 및 기타 정보가 있으면 알려 주시기 바랍니다 될 것이다 필요합니다.

미리 감사드립니다.

Brad.

+2

브래드, 가상 장치에 SDCard 지원 속성 집합이 설정되어 있는지 확인하십시오. 확실치는 않지만 이것이 원인 일 수 있습니다. – FireAndIce

+0

타겟팅하는 Android의 버전에 따라 다음을 추가해야 할 수도 있습니다. 'http://desktop.android.com/reference/android/Manifest .permission.html # READ_EXTERNAL_STORAGE – Squonk

+0

@FireAndIce & Squonk - 빠른 답장을 보내 주셔서 감사합니다. 그래서 가상 장치였습니다. 실제로 가상 장치를 이전에 다시 만들려고 시도했지만 방금 다시 만들었으며 이번에는 크기가 변경되었습니다. 지금 그것의 다시 일 :). 또한 필자는 외부 저장 장치에 대한 읽기 권한을 추가했습니다. 다시 한번 감사드립니다. –

답변

5

가상 장치와 관련된 문제로 인해 오류가 발생했습니다. 장치를 제거하고 다시 만들었으므로 오류가 더 이상 발생하지 않았습니다.

+0

똑같은 문제가있었습니다. 가상 장치를 SD 카드 메모리로 다시 만들었습니다. 첫 번째 장치에는 SD 카드 메모리가 없었습니다. –

관련 문제