カメラから写真を撮った後、画像を電子メールで送信する必要があります。必要な画像のアドレスを印刷すると、filePath
変数に保存されているものが正しく印刷されます。/mnt/sdcard/DCIM/camera/2013-04-2921.33.45.jpgと表示されますが、送信するとアプリケーションに添付ファイルが表示されますが、メールを送信した後、受信者は添付ファイルを受信しません。
私のアプリケーションの基本的な構造は次のとおりです。
- 私のアプリの最初の画面で、ユーザーはボタン「TAKE PICTURE」をクリックします。
- 電話のデフォルトのカメラアプリが来て、ユーザーは写真を撮ります。
- 次に、ユーザーは自分の名前と電話番号を入力するよう求められます。
- 名前、電話番号、画像を電子メールに添付して、事前に定義されたアドレスに送信する必要があります。(Gmail Android アプリ)
- 名前と電話番号はメール本文に記載されています。また、画像が添付されています。しかし、メールを送信すると、受信したメールに画像が添付されていません。
添付ファイルのコードは次のとおりです。
public class INF extends Activity {
String pic,fullPath;
private static final String TAG = "MyActivity";
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.in);
final EditText et = (EditText)findViewById(R.id.et1);
final EditText et2 = (EditText)findViewById(R.id.et2);
Button bt = (Button)findViewById(R.id.bt);
getLastImageId();
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("plain/text");
i.putExtra(Intent.EXTRA_EMAIL, new String[]{"pravind.india@gmail.com"});
i.putExtra(Intent.EXTRA_SUBJECT, "My Information");
i.putExtra(Intent.EXTRA_TEXT, "Name:"+et.getText().toString()+'\n'+"Mobile No."+et2.getText().toString());
i.putExtra(Intent.EXTRA_STREAM, Uri.parse(fullPath));
startActivity(Intent.createChooser(i, "send email...."));
}
});
}
private int getLastImageId(){
final String[] imageColumns = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA };
final String imageOrderBy = MediaStore.Images.Media._ID+" DESC";
Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns, null, null, imageOrderBy);
if(imageCursor.moveToFirst()){
int id = imageCursor.getInt(imageCursor.getColumnIndex(MediaStore.Images.Media._ID));
fullPath = imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA));
Log.d(TAG, "getLastImageId::id " + id);
Log.d(TAG, "getLastImageId::path " + fullPath);
imageCursor.close();
return id;
}else{
return 0;
}
}
}
getLastImageId
カメラが最後に撮影した画像のパスを variable に格納しますfullPath
。