2016-11-27 42 views
0

ギャラリーから画像を取得して電子メールの添付ファイルとして渡す簡単なアプリを試してみると、次のようになりました:添付ファイル付きAndroidメールアプリは付属していません

コード

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

     if(resultCode == RESULT_OK){ 

      if(requestCode == 1){ 
      imageUri = data.getData(); 
      File root = Environment.getExternalStorageDirectory(); 
      String pathToMyAttachedFile = imageUri.getPath().toString(); 
      File file = new File(root, pathToMyAttachedFile); 
      if (!file.exists() || !file.canRead()) { 
       return; 
      } 
      uri = Uri.fromFile(file); 
     } 
    } 
} 

開くために、送信ボタン上のonClickメソッドをオーバーライドし

ivGalerija.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       Intent intent = new Intent(); 
       intent.setType("image/*"); 
       intent.setAction(Intent.ACTION_GET_CONTENT); 
       startActivityForResult(Intent.createChooser(intent, "Select content image"), 1); 

      } 
     }); 

意図OnActivityResult方法を使用してのImageButtonを経由して、ギャラリーにアクセスするためのメールアプリ

bSubmit = (Button) findViewById(R.id.bSubmit); 
     bSubmit.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       etMesto = (EditText) findViewById(R.id.etMesto); 
       etUlica = (EditText) findViewById(R.id.etUlica); 
       etOpis = (EditText) findViewById(R.id.etOpis); 

       Intent intent = null, chooser = null; 

       es = (TextView) findViewById(R.id.tvMesto); 

       intent = new Intent(Intent.ACTION_SEND); 

       intent.setData(Uri.parse("mailto:")); 
       String[] to = {"[email protected]"}; 
       intent.putExtra(Intent.EXTRA_EMAIL, to); 
       intent.putExtra(Intent.EXTRA_SUBJECT, "Prijava kvara"); 
       intent.putExtra(Intent.EXTRA_TEXT, "Elektrodistribucija: " + spElektrodistribucija + "\nMesto neovlascene potrosnje: " + 
         etMesto.getText().toString() + "\nUlica i broj: " + etUlica.getText().toString() + "\nOpis: " + etOpis.getText().toString()); 
       intent.setType("message/rfc822"); 

       intent.putExtra(Intent.EXTRA_STREAM, uri); 
       chooser = Intent.createChooser(intent, "Send email"); 
       startActivity(chooser); 
      } 
     }); 
    } 

は全部テキストが正しくフォーマットされたメール本文に渡される、添付ファイルなしで正常に動作しますが、ない添付ファイルはありません。私はUriフィールドを静的に静的にして、どこにでもアクセスできるようにしました。問題がどこにあるのかわかりません。とにかく、さらに邪魔することなく...このコードは、電子メールアプリに意図としてイメージを運び、送信するのではなく、何も選択されていないかのように起こります。私は何が欠けていますか?

答えて

0

uriからuriを構築しないでください。

intent.putExtra(Intent.EXTRA_STREAM, uri); 

しかし、その代わりに、元のURIを使用します。

intent.putExtra(Intent.EXTRA_STREAM, data.getData()); 
+0

しかし、データフィールドはOnActivityResultにあり、そこにアクセスすることはできません。どのように私はそれにアクセスすべきですか?応答ありがとうbtw – MilesWeirdo

+0

uri = data.getData();このようにして、新しいURIを作成するのではなく元のURIを使用します。 – greenapps

+0

私はOnResultActivityメソッドからimageUri = data.getData()を除いてすべてを削除しました。フィールドを静的にし、putExtraメソッドに置いた私のサブミットメソッドに戻してアクセスしました。私は十分にあなたに感謝することはできません、私は数日間絶望的でした – MilesWeirdo

関連する問題