如何在android的内部存储器中创建文件,以便以后我可以将它附加到电子邮件

时间:2012-09-13 12:40:11

标签: android email-attachments createfile

我想在android的内部存储器中创建文件。 然后我必须将它附加到电子邮件。 请帮我。 我不知道这个文件存储在哪里。???

3 个答案:

答案 0 :(得分:0)

通读http://developer.android.com/guide/topics/data/data-storage.html,如果您仍有疑问,请发布更具体的内容。

答案 1 :(得分:0)

以下是创建和读取文件的代码,

public class ReadNWriteFile extends Activity {

 final String TEST_STRING = new String("Hello Android");
 final String FILE_NAME = "SAMPLEFILE.txt";

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  TextView tv = new TextView(this);
  fileCreate();
  tv.setText(readFile());
  setContentView(tv);
 }

 private void fileCreate() {
  try {
   OutputStream os = openFileOutput(FILE_NAME, MODE_WORLD_READABLE);
   OutputStreamWriter osw = new OutputStreamWriter(os);
   osw.write(TEST_STRING);
   osw.close();
  } catch (Exception e) {
   Log.i("ReadNWrite, fileCreate()", "Exception e = " + e);
  }
 }

 private String readFile() {
  try {
   FileInputStream fin = openFileInput(FILE_NAME);
   InputStreamReader isReader = new InputStreamReader(fin);
   char[] buffer = new char[TEST_STRING.length()];
   // Fill the buffer with data from file
   isReader.read(buffer);
   return new String(buffer);
  } catch (Exception e) {
   Log.i("ReadNWrite, readFile()", "Exception e = " + e);
   return null;
  }
 }
}

获取路径/data/data/package_name/yourFile_Name

答案 2 :(得分:0)

很容易尝试/遵循这个,我希望它会帮助你

     @Override
     public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);

     buttonSend = (Button) findViewById(R.id.buttonSend);

    textTo = (EditText) findViewById(R.id.editTextTo);
    textSubject = (EditText) findViewById(R.id.editTextSubject);
    textMessage = (EditText) findViewById(R.id.editTextMessage);

    buttonSend.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {

        String to = textTo.getText().toString();
        String subject = textSubject.getText().toString();
        String message = textMessage.getText().toString();

        Intent i = new Intent(Intent.ACTION_SEND);
        i.setType("plain/text");
        File data = null;
        try {
            Date dateVal = new Date();
            String filename = dateVal.toString();
            data = File.createTempFile("Report", ".csv");
            FileWriter out = (FileWriter) GenerateCsv.generateCsvFile(
                    data, "Name,Data1");
            i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(data));
            i.putExtra(Intent.EXTRA_EMAIL, new String[] { to });
            i.putExtra(Intent.EXTRA_SUBJECT, subject);
            i.putExtra(Intent.EXTRA_TEXT, message);
            startActivity(Intent.createChooser(i, "E-mail"));

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

    }
});
}

 public class GenerateCsv {
public static FileWriter generateCsvFile(File sFileName,String fileContent) {
    FileWriter writer = null;

    try {
        writer = new FileWriter(sFileName);
        writer.append(fileContent);
                     writer.flush();

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally
    {
        try {
            writer.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    return writer;
}

}

在AndroidManifest.xml文件中添加以下行:

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