2017-12-14 13 views
1

ここは私のpreference.xmlの一部です。preference.xmlからメールを送信する際にエラーが発生する理由

<Preference 
      android:summary="Write me" 
      android:title="Title"> 
      <intent 
       android:action="android.intent.action.VIEW" 
       android:data="mailto:[email protected]" 
       /> 
     </Preference> 

私はこの設定にクリックてる私は

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=mailto:[email protected] } 

私は間違って何をしますかとのクラッシュを持っていますか?

これは私の好みのクラスです。私はtheadsをたくさん読みますが、答えを見つけていない:好みは完璧に動作します

public class Preferences extends PreferenceActivity implements SharedPreferences.OnSharedPreferenceChangeListener { 
    public static final String KEY_PREF_INSTANT_PRINT = "instantPrinting"; 
    public static final String KEY_PREF_INSTANT_PRINT_SCREEN = "instantPrintingScreen"; 
    public static final String KEY_PREF_PAY_BUTTONS = "paymentTypes"; 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     getPreferenceScreen().getSharedPreferences() 
       .registerOnSharedPreferenceChangeListener(this); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     getPreferenceScreen().getSharedPreferences() 
       .unregisterOnSharedPreferenceChangeListener(this); 
    } 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); 
     addPreferencesFromResource(R.xml.preference); 
     Preference instantPrintingScreen = findPreference(KEY_PREF_INSTANT_PRINT_SCREEN); 
     instantPrintingScreen.setEnabled(sharedPref.getBoolean(KEY_PREF_INSTANT_PRINT, false)); 
    } 

    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, 
              String key) { 
     if (key.equals(KEY_PREF_INSTANT_PRINT)) { 
      Preference connectionPref = findPreference(KEY_PREF_INSTANT_PRINT_SCREEN); 
      connectionPref.setEnabled(sharedPreferences.getBoolean(key, false)); 
     } 
    } 
} 
+0

問題はあなたの意図です、あなたはIntentChooserを使用していますか、あなたのコードを追加していますか? – Jorgesys

+0

私はクラスを追加しました。何か案が? – Andrew

答えて

1

、ここでの問題は、あなたが電子メールを処理するために、任意のクライアントアプリケーションを持っているドントということです。

私は私がアプリケーションを参照してください好みを開こうとするので、もし、電子メールを扱うことができる3つのアプリケーションがインストールされている:問題は、お使いのデバイスである

enter image description here

enter image description here

mailto:スキームを開くことができるアプリを持っていないか、電子メールを処理できます。 ActivityNotFoundException: No Activity found to handle Intentを検証する方法


?あなたはレイアウトから直接意思を開いている。この場合、

まあ:あなたがインストールされ、いくつかのアプリで電子メールを開くことができるかどうかを確立するために

<intent 
      android:action="android.intent.action.VIEW" 
      android:data="mailtoa:[email protected]" 
      /> 

ので、オプションとして、あなたが事前に検証を行うことができますアンドロイドデバイス。

public boolean canOpenEmail(){ 
    try { 
     startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("mailto:[email protected]"))); 
    }catch (ActivityNotFoundException afe){ 
     Log.e(TAG, afe.getMessage()); 
     return false; 
    } 
    return true; 
} 
+0

どうすれば私のアプリがクラッシュしないように例外をキャッチできますか? – Andrew

+0

@Andrew私は自分の答えを更新しました! :) – Jorgesys

関連する問題