2012-12-12 11 views
10

क्या संदेश भेजने के लिए बिना किसी प्रोग्राम के खुले ईमेल क्लाइंट को खोलने का कोई तरीका है? मैं सिर्फ उपयोगकर्ता ईमेल की जाँच के प्रयोजनों के लिए अपने ईमेल क्लाइंट खोलने जाने के लिए एप्लिकेशन चाहते :)इरादे के माध्यम से ईमेल क्लाइंट खोलना (लेकिन एक संदेश भेजने के लिए नहीं)

Intent intent = new Intent(Intent.ACTION_SEND); 
    intent.setType("message/rfc822"); 
    startActivity(Intent.createChooser(intent, "")); 

इस कोड काम करता है, लेकिन यह उपयोगकर्ता बलों नया संदेश भेजने के लिए।

उत्तर

1

मुझे लगता है कि आप बदलना चाहिए Intent.ACTION_SEND करने के लिए Intent.ACTION_VIEW,
मुझे यकीन है कि इस के रूप में इस आवेदन जो MIME प्रकार "message/rfc822" का समर्थन तो यह होगा की सूची के साथ संकेत देगा काम करेंगे हूँ जीमेल ऐप के अलावा अपने डिवाइस में अपना डिफ़ॉल्ट ईमेल क्लाइंट शामिल करें।

इस कोड के बारे में कैसे:

final Intent emailLauncher = new Intent(Intent.ACTION_VIEW); 
emailLauncher.setType("message/rfc822"); 
try{ 
     startActivity(emailLauncher); 
}catch(ActivityNotFoundException e){ 

} 
19
Intent intent = new Intent(Intent.ACTION_MAIN); 
    intent.addCategory(Intent.CATEGORY_APP_EMAIL); 
    startActivity(intent); 
    startActivity(Intent.createChooser(intent, getString(R.string.ChoseEmailClient))); 

उस तरह से काम किया। लेकिन यह मेरे लिए जीमेल opend, यहां तक ​​कि जब मैं अन्य ईमेल क्लाइंट

है
+1

किसी भी ईमेल ऐप जैसे अपवादों से बचने के लिए प्रारंभ गतिविधि पर प्रयास करने का प्रयास करना चाहिए। – ademar111190

+0

क्या आपने कभी भी chooser काम करने का प्रबंधन किया था? यह मेरे लिए जीमेल खोलता है, और मेरे पास एक और ईमेल क्लाइंट स्थापित है (MyMail)। – user1354603

+0

आप अंतिम लाइन छोड़ सकते हैं। कॉलिंग 'स्टार्ट एक्टिविटी (इरादा);' एक चयनकर्ता को स्पष्ट रूप से खुलता है (जब तक कोई डिफॉल्ट सेट नहीं होता है), इसलिए 'CreateChooser' अनावश्यक नहीं है। –

4

इस कोड को ईमेल क्लाइंट की एक सूची के साथ एक संवाद दिखाई देगा। एक पर क्लिक करने से एप्लिकेशन लॉन्च होगा:

try { 
    List<String> emailClientNames = new ArrayList<String>(); 
    final List<String> emailClientPackageNames = new ArrayList<String>(); 
    // finding list of email clients that support send email 
    Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
     "mailto", "[email protected]", null)); 
    PackageManager pkgManager = AppController.getContext().getPackageManager(); 
    List<ResolveInfo> packages = pkgManager.queryIntentActivities(intent, 0); 
    if (!packages.isEmpty()) { 
     for (ResolveInfo resolveInfo : packages) { 
      // finding the package name 
      String packageName = resolveInfo.activityInfo.packageName; 
      emailClientNames.add(resolveInfo.loadLabel(getPackageManager()).toString()); 
      emailClientPackageNames.add(packageName); 
     } 
     // a selection dialog for the email clients 
     AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this); 
     builder.setTitle("Select email client"); 
     builder.setItems(emailClientNames.toArray(new String[]{}), new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      // on click we launch the right package 
      Intent intent = getPackageManager().getLaunchIntentForPackage(emailClientPackageNames.get(which)); 
       startActivity(intent); 
      } 
     }); 
     AlertDialog dialog = builder.create(); 
     dialog.show(); 
    } 
} catch (ActivityNotFoundException e) { 
    // Show error message 
} 
+0

यह मेरे लिए काम करता है! आपका बहुत बहुत धन्यवाद। –

संबंधित मुद्दे