2014-09-01 2 views
1

Intent.ACTION_SENDTO в шоу два варианта, но мой клент просит убрать опцию GMAIL и я не вижу выхода, пожалуйста, помогите мнеIntent.ACTION_SENDTO показаны два варианта, я хочу показать только один

Intent emailIntent = 
new Intent(Intent.ACTION_SENDTO, 
Uri.fromParts("mailto",userInput.getText().toString(), null)); 
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Press Release"); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Please view this press release"); 
startActivity(Intent.createChooser(emailIntent,"Send mail using...")); 

enter image description here

+0

Он покажет все возможные действия по умолчанию, которые доступны в устройстве. Поскольку устройство будет иметь приложение Gmail, этот выборщик также покажет Gmail. –

+0

Вы имели в виду, что хотите открыть Email Composer напрямую или только для удаления Gmail.? – SilentKiller

+0

Мне нужно удалить gmail из этого намерения, как я понимаю, но скажите, есть ли способ напрямую перейти к составителю электронной почты, не показывая оба этих значка. –

ответ

3

Используйте emailIntent.setPackage(PackageName of Email app); перед тем, как позвонить startActivity.


Вам необходимо установить почтового клиента, имя пакета, но в устройствах Samsung com.sec.android.email по умолчанию встроенный почтовый клиент, но в HTC это com.htc.android.mail и так далее. Поэтому сначала вам нужно отфильтровать это приложение, а затем установить намерение. Я добавляю решение

Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
     "mailto", userInput.getText().toString(), null)); 
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Press Release"); 
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, 
     "Please view this press release"); 

// Identify the package name of email client and set to intent 
List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(emailIntent, 0); 
if (!resInfo.isEmpty()) { 
    for (ResolveInfo info : resInfo) { 
     if (info.activityInfo.packageName.toLowerCase().contains(".android.email") 
       || info.activityInfo.name.toLowerCase().contains(".android.email")) { 
      emailIntent.setPackage(info.activityInfo.packageName); 
      // And now call 
      startActivity(Intent.createChooser(emailIntent, "Send mail using...")); 
     } 
    } 
} 

Вы должны прочитать Android: How to get the native Email clients package name

+2

Я думаю, что 'com.google.android.gm' - это имя пакета приложения Gmail, а вопрос о нем **, но мой член просит удалить опцию gmail ** – SilentKiller

+0

спасибо, что поделились своими исследованиями со мной –

0

ЕСЛИ ВЫ ХОТИТЕ СНЯТЬ GMAIL КЛИЕНТА ИЗ СПИСКА создать пользовательский cooser

List<Intent> intents = new ArrayList<Intent>(); 
      Intent sendIntent = new Intent(android.content.Intent.ACTION_SEND); 
      sendIntent.setType("text/plain"); 
      List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(sendIntent, 0); 
      if (!resInfo.isEmpty()){ 
       for (ResolveInfo resolveInfo : resInfo) { 
        String packageName = resolveInfo.activityInfo.packageName; 
        Intent neededShareIntent = new Intent(android.content.Intent.ACTION_SEND); 
        neededShareIntent.setType("text/plain"); 
        neededShareIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject"); 
        neededShareIntent.setPackage(packageName); 
        if (!StringUtils.equals(packageName, "com.google.android.gm")){ 
         intents.add(neededShareIntent); 
        } 

       } 
       Intent chooserIntent = Intent.createChooser(intents.remove(0), "Select app to share"); 

       chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intents.toArray(new Parcelable[]{})); 

       startActivity(chooserIntent); 
      } 

Pls проверить этот код и проверить

+1

Я думаю, что 'com.google.android.gm' является именем пакета приложения Gmail, а вопрос о нем **, но мой член просит удалить параметр gmail ** – SilentKiller

+0

приятель Я скопировал ваш код, но все еще показываю мне обе иконки –

+0

Что о том, есть ли у него три почтовых клиента на устройстве? –

Смежные вопросы