How to open the default mail inbox from android code?

前端 未结 9 1544
执念已碎
执念已碎 2021-02-19 00:43

I\'m trying to link a button to the mail app. Not to send mail, but just to open the inbox.

Should I do this with Intent intent = new Intent(...)?

相关标签:
9条回答
  • 2021-02-19 00:46

    To open it new task use the below code:

    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_APP_EMAIL);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    
    0 讨论(0)
  • 2021-02-19 00:46
      You can use this but it is for gmail only
    
      Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);  
      emailIntent.setType("plain/text");
      startActivity(emailIntent); 
    
    0 讨论(0)
  • 2021-02-19 00:48

    If the goal is to open the default email app to view the inbox, then key is to add an intent category and use the ACTION_MAIN intent like so:

    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_APP_EMAIL);
    getActivity().startActivity(intent);
    

    https://developer.android.com/reference/android/content/Intent.html#CATEGORY_APP_EMAIL

    0 讨论(0)
  • 2021-02-19 00:52

    Unfortunately it doesn't look promising. This has been asked before

    How do I launch the email client directly to inbox view?

    you can open the email client in compose mode, but you seem to already know that.

    0 讨论(0)
  • 2021-02-19 00:54

    This code worked for me. It opens a picker with all email apps registered to device and straight to Inbox:

    Intent emailIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("mailto:"));
        PackageManager pm = getPackageManager();
    
        List<ResolveInfo> resInfo = pm.queryIntentActivities(emailIntent, 0);
        if (resInfo.size() > 0) {
            ResolveInfo ri = resInfo.get(0);
            // First create an intent with only the package name of the first registered email app
            // and build a picked based on it
            Intent intentChooser = pm.getLaunchIntentForPackage(ri.activityInfo.packageName);
            Intent openInChooser =
                    Intent.createChooser(intentChooser,
                            getString(R.string.user_reg_email_client_chooser_title));
    
            // Then create a list of LabeledIntent for the rest of the registered email apps 
            List<LabeledIntent> intentList = new ArrayList<LabeledIntent>();
            for (int i = 1; i < resInfo.size(); i++) {
                // Extract the label and repackage it in a LabeledIntent
                ri = resInfo.get(i);
                String packageName = ri.activityInfo.packageName;
                Intent intent = pm.getLaunchIntentForPackage(packageName);
                intentList.add(new LabeledIntent(intent, packageName, ri.loadLabel(pm), ri.icon));
            }
    
            LabeledIntent[] extraIntents = intentList.toArray(new LabeledIntent[intentList.size()]);
            // Add the rest of the email apps to the picker selection
            openInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, extraIntents);
            startActivity(openInChooser);
        }
    
    0 讨论(0)
  • 2021-02-19 01:00

    Intent email = new Intent(Intent.ACTION_MAIN);

    email.addCategory(Intent.CATEGORY_APP_EMAIL); startActivity(email);

    0 讨论(0)
提交回复
热议问题