我正在尝试发送一封包含外部存储空间文件附件的电子邮件。但是我无法看到该文件或由于模拟器和手机的IO错误而发送它。 这是我的代码:
package com.energyengineeringltd.www.energyengineeringltd;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.design.widget.FloatingActionButton;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.Number;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.lang.reflect.Array;
public class emailone extends Activity {
private String filepath = "MyFileStorage";
File myExternalFile;
String myData = "";
Button b1;
EditText ed1;
String file_name;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.email);
b1 = (Button) findViewById(R.id.button);
ed1 = (EditText) findViewById(R.id.editText);
if (!isExternalStorageAvailable() || isExternalStorageReadOnly()) {
b1.setEnabled(false);
} else {
Intent intent = getIntent();
String a = intent.getStringExtra("project");
String c = intent.getStringExtra("unique");
file_name = a + "1CableSupportContainmentChecklist" + c + ".txt";
myExternalFile = new File(getExternalFilesDir(filepath), file_name);
}
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!ed1.getText().toString().contains("@")) {
Toast.makeText(getApplicationContext(),
"Please enter a valid email", Toast.LENGTH_SHORT).show();
} else {
File filelocation = new File(getFilesDir().getAbsolutePath() + filepath, file_name);
Uri path = Uri.fromFile(filelocation);
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setType("vnd.android.cursor.dir/email");
String to[] = {ed1.getText().toString()};
emailIntent.putExtra(Intent.EXTRA_EMAIL, to);
emailIntent.putExtra(Intent.EXTRA_STREAM, path);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
Toast.makeText(getApplicationContext(),
"sending...", Toast.LENGTH_SHORT).show();
startActivity(Intent.createChooser(emailIntent, "Send email..."));
}
}
});
}
private static boolean isExternalStorageReadOnly() {
String extStorageState = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(extStorageState)) {
return true;
}
return false;
}
private static boolean isExternalStorageAvailable() {
String extStorageState = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(extStorageState)) {
return true;
}
return false;
}
}
有谁知道我可以做些什么来解决这个IO错误,它甚至不会出现在Android监视器中,所以我不知道。非常感谢!!!