gpt4 book ai didi

android - 为什么我使用 intent 从 preference.xml 发送电子邮件时出错

转载 作者:行者123 更新时间:2023-11-30 00:13:07 27 4
gpt4 key购买 nike

这是我的 preference.xml 的一部分。

 <Preference
android:summary="Write me"
android:title="Title">
<intent
android:action="android.intent.action.VIEW"
android:data="mailto:support@xxxxx.com"
/>
</Preference>

当我点击这个首选项时,我遇到了崩溃

 android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=mailto:xxxxxx.x@x-xxxxxx.xxx }

我做错了什么?

这是我的首选类(class)。我读了很多广告,但没有找到答案:

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));
}
}
}

最佳答案

首选项将完美运行,这里的问题是您没有任何客户端应用程序来处理电子邮件。

我已经安装了 3 个可以处理电子邮件的应用程序,所以如果我尝试打开首选项,我会看到这些应用程序:

enter image description here

enter image description here

The problem is because your device doesn´t have any app that can open the scheme mailto: or can handle email.


如何验证 ActivityNotFoundException:找不到处理 Intent 的 Activity

在这种情况下,您将直接从布局中打开 Intent :

<intent
android:action="android.intent.action.VIEW"
android:data="mailtoa:support@xxxxx.com"
/>

因此,作为一种选择,您可以进行预验证以确定您是否可以使用安装在您的 Android 设备上的某些应用程序打开电子邮件。

public boolean canOpenEmail(){
try {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("mailto:support@xxxxx.com")));
}catch (ActivityNotFoundException afe){
Log.e(TAG, afe.getMessage());
return false;
}
return true;
}

关于android - 为什么我使用 intent 从 preference.xml 发送电子邮件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47817181/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com