4

私は電子メールを送信するためのアプリケーションを開発しました。電子メール ボタンをクリックすると、電話にインストールされている電子メール クライアントのいずれかを選択するようにユーザーに要求する必要があります。しかし、私の場合、さらに、必要のない bluetooth のオプションが表示されています。私はたくさん検索しましたが、解決策はありませんでした。以下に私のコードを掲載しています。

public class EtestActivity extends Activity {
/** Called when the activity is first created. */
Button email;
Intent in;
private static final String TAG = "EmailLauncherActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    email = (Button)findViewById(R.id.email);
    email.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            try {
                in = new Intent(Intent.ACTION_SEND);
                in.setType("image/jpg");
                in.setType("plain/text");
                in.setType("application/octet-stream");
                in.putExtra(Intent.EXTRA_EMAIL, new String[]{"pranav_kotauniv@yahoo.co.in","friendlynitish@gmail.com"});
                in.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/android.jpg"));  
                startActivity(Intent.createChooser(in, "mailto:"));
            } catch (Exception e) {
                Log.e(TAG, "email sending failed", e);
            }//catch
        }//onClick
    });
}//onCreate

}//クラス

4

3 に答える 3

2

ACTION_SEND の代わりに ACTION_SENDTO を使用してみてください。これで問題が解決する場合があります。
これがAPIです。いつでも独自のカスタム ダイアログを
使用PackageManagerおよび表示できます。queryIntentActivities()

于 2012-05-02T10:06:22.723 に答える
1

電子メールを送信するためのコード。PackageManager(http://developer.android.com/reference/android/content/pm/PackageManager.html) を使用すると、異なる選択肢を避けることができます。

private void sendEpost(String type) {
boolean found = false;
Intent in = new Intent(android.content.Intent.ACTION_SEND);
in.setType("image/jpeg");
in.setType("application/octet-stream");
List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(in, 0);
if (!resInfo.isEmpty()){
    for (ResolveInfo info : resInfo) {
        if (info.activityInfo.packageName.toLowerCase().contains(type) || 
                info.activityInfo.name.toLowerCase().contains(type) ) {
            in.putExtra(Intent.EXTRA_EMAIL, new String[]{});
            in.putExtra(Intent.EXTRA_SUBJECT,  "subject");
            in.putExtra(Intent.EXTRA_TEXT,     "your text");
            in.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(Environment.getExternalStorageDirectory()
                    .getAbsolutePath().toString()+"/diplomat/"+adapter.readName(touches))));
            in.setPackage(info.activityInfo.packageName);
            found = true;
            break;
        }
    }
    if (!found)
        return;
    startActivity(Intent.createChooser(in, "Select"));
}
}//sendEpost
于 2012-06-21T03:38:01.527 に答える
0

これを解決するには2つのオプションがあります。

setType("message/rfc822");まず、インテントのタイプを変更するこれを参照してください。

Intent.ACTION_SENDTO2つ目は、アクションタイプを変更するこれを参照してください。

于 2012-05-02T10:17:11.237 に答える