1

カメラから写真を撮った後、画像を電子メールで送信する必要があります。必要な画像のアドレスを印刷すると、filePath変数に保存されているものが正しく印刷されます。/mnt/sdcard/DCIM/camera/2013-04-2921.33.45.jpgと表示されますが、送信するとアプリケーションに添付ファイルが表示されますが、メールを送信した後、受信者は添付ファイルを受信しません。

私のアプリケーションの基本的な構造は次のとおりです。

  1. 私のアプリの最初の画面で、ユーザーはボタン「TAKE PICTURE」をクリックします。
  2. 電話のデフォルトのカメラアプリが来て、ユーザーは写真を撮ります。
  3. 次に、ユーザーは自分の名前と電話番号を入力するよう求められます。
  4. 名前、電話番号、画像を電子メールに添付して、事前に定義されたアドレスに送信する必要があります。(Gmail Android アプリ)
  5. 名前と電話番号はメール本文に記載されています。また、画像が添付されています。しかし、メールを送信すると、受信したメールに画像が添付されていません。

添付ファイルのコードは次のとおりです。

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

4

2 に答える 2

1

あなたの間違いは、インテントのタイプをそうではtextないものとして選択したoctet-streamため、これを行う必要があることです

setType("application/octet-stream") 

これの代わりに

setType("plain/text");
于 2013-04-29T19:32:43.410 に答える