Galaxy 设备上的 Android 电子邮件 Intent 崩溃

标签 android email android-intent crash galaxy

我制作了一个应用程序,可以通过单击按钮启动新的电子邮件 Intent ,我已经在多个设备上测试了它,它似乎工作正常,只是它在 Galaxy 2 和 Galaxy 3 上崩溃。这是我检查的代码互联网访问然后调用 Intent 。

ConnectivityManager cm = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
if((cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isAvailable() && cm.getActiveNetworkInfo().isConnected())) 
{
    Log.d("Main", "Start Email");

    Intent sendIntent = new Intent(Intent.ACTION_VIEW);
    sendIntent.setClassName("com.google.android.gm","com.google.android.gm.ComposeActivityGmail");
    sendIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { monkey.getSendTo() });
    sendIntent.setData(Uri.parse(monkey.getSendTo()));
    sendIntent.putExtra(Intent.EXTRA_SUBJECT, "TFS note");
    sendIntent.setType("plain/text");
    sendIntent.putExtra(Intent.EXTRA_TEXT, "Sent From TFS\n");
    startActivity(sendIntent);

} else{//toast if there is no internet
    Toast.makeText(getActivity().getBaseContext(),"No Internet\n   access", 
    Toast.LENGTH_SHORT).show();
}

在我看来,在 Galaxy 设备上,它没有对 gmail 应用程序进行罚款,因此它无法启动 Intent ,所以我想知道如何才能创建一个通用 Intent 来打开任何形式的电子邮件应用程序,或者是否有更好的方法使其与 Galaxy 设备兼容。

最佳答案

请删除:

sendIntent.setClassName("com.google.android.gm","com.google.android.gm.ComposeActivityGmail");

这对用户来说是一种侮辱,迫使他们使用 Gmail。它是用户的设备、用户的带宽、用户的电池、用户的数据和用户的时间。请允许用户按照自己的意愿发送用户数据。

此外,该 Activity 可能并不存在于所有版本的 Gmail 中,并且该 Activity 可能不会在所有版本的 Gmail 中导出。

另外,请更改:

sendIntent.setType("plain/text");

至:

sendIntent.setType("text/plain");

as plain/text 不是有效的 MIME 类型。

您还应该删除所有 ConnectivityManager 内容。并非用户想要共享此信息的每种方式都需要立即连接互联网。

这些都与您的崩溃无关,这是因为您引用的 Activity (com.example.tfs.MainCalActivity) 在您的 APK 中不存在。

关于Galaxy 设备上的 Android 电子邮件 Intent 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15863966/

相关文章:

java - starttls+smtp 与 SMTP over SSL 是否相同?

android-intent - Android TextToSpeech 初始化 - 将默认 TTS 引擎设置为 "android.speech.tts"

java - 如何在 Android 中的 Activity 之间访问相同的变量

android - 从 parcelable、contentView 或 contentIntent 中提取通知文本

android - setOnClickListener(this) 和 setOnClickListener(new View.OnClickListener(){}) 内存泄漏

email - ColdFusion cfmail 如何保持格式

android - Sensor.TYPE_ROTATION_VECTOR 返回 null

git - 通过 git send-email 在同一主题下发送多个补丁

android - Android 12 中的 IntentFilter 和导出组件是否有任何(记录不详的)更改?

Android,activity finish() 后退堆栈上的前一个 Activity 会发生什么情况?