user1537684
user1537684

Reputation: 77

Android emulator file read permission

I need to upload a file from my android emulator directory ('data\data\org.mypackage\file.dat') to a remote server, but when I try to access the file it gives an error like 'error: Permission denied', I store my sqlite database in 'data\data\org.mypackage\databases\' folder , during the application startup if there is no sqlite db in that folder I copied it from my asset folder to that directory and access it from there it works perfect but in the case upload task it ask for permission why this occur? following is my uploadFile method

    private void uploadFile(){ 

    HttpURLConnection conn = null; 
    DataOutputStream dos = null; 
    DataInputStream inStream = null; 
    String existingFileName="/data/data/org.mypackage/file.dat";
    GeneralFunctions.comment(existingFileName);
    String lineEnd = "\r\n"; 
    String twoHyphens = "--"; 
    String boundary =  "*****"; 
    int bytesRead, bytesAvailable, bufferSize; 
    byte[] buffer; 
    int maxBufferSize = 1*1024*1024; 
    String responseFromServer = ""; 
    String urlString = "http://117.231.150.213:8080/upload.jsp"; 
    try 
    { 
     //------------------ CLIENT REQUEST 
    FileInputStream fileInputStream = new FileInputStream(new File(existingFileName) ); 
     // open a URL connection to the Servlet 
     URL url = new URL(urlString); 
     // Open a HTTP connection to the URL 
     conn = (HttpURLConnection) url.openConnection(); 
     // Allow Inputs 
     conn.setDoInput(true); 
     // Allow Outputs 
     conn.setDoOutput(true); 
     // Don't use a cached copy. 
     conn.setUseCaches(false); 
     // Use a post method. 
     conn.setRequestMethod("POST"); 
     conn.setRequestProperty("Connection", "Keep-Alive"); 
     conn.setRequestProperty("Content-Type", "multipart/form-data;boundary="+boundary); 
     dos = new DataOutputStream( conn.getOutputStream() ); 
     dos.writeBytes(twoHyphens + boundary + lineEnd); 
     dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + existingFileName + "\"" + lineEnd); 
     dos.writeBytes(lineEnd); 
     // create a buffer of maximum size 
     bytesAvailable = fileInputStream.available(); 
     bufferSize = Math.min(bytesAvailable, maxBufferSize); 
     buffer = new byte[bufferSize]; 
     // read file and write it into form... 
     bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
     while (bytesRead > 0) 
     { 
      dos.write(buffer, 0, bufferSize); 
      bytesAvailable = fileInputStream.available(); 
      bufferSize = Math.min(bytesAvailable, maxBufferSize); 
      bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
     } 
     // send multipart form data necesssary after file data... 
     dos.writeBytes(lineEnd); 
     dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 
     // close streams 
     GF.showToast("File is written"); 
     fileInputStream.close(); 
     dos.flush(); 
     dos.close(); 
    } 
    catch (Exception ex) 
    { 
         GeneralFunctions.exception("error: " + ex.getMessage()); 
    } 

    //------------------ read the SERVER RESPONSE 
    try { 
          inStream = new DataInputStream ( conn.getInputStream() ); 
          String str; 

          while (( str = inStream.readLine()) != null) 
          { 
              GeneralFunctions.comment("Server Response "+str); 
          } 
          inStream.close(); 

    } 
    catch (Exception ioex){ 
          GeneralFunctions.exception("error: " + ioex.getMessage()); 
    } 
  } 

Upvotes: 1

Views: 436

Answers (1)

Sa Dec
Sa Dec

Reputation: 114

Add INTERNET permission to your manifest.

If you can provide logcat then it will help more.

Upvotes: 2

Related Questions