相关疑难解决方法(0)

发送电子邮件意图

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/html");
intent.putExtra(Intent.EXTRA_EMAIL, "emailaddress@emailaddress.com");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "I'm email body.");

startActivity(Intent.createChooser(intent, "Send Email"));
Run Code Online (Sandbox Code Playgroud)

上面的代码打开一个对话框,显示以下应用程序: - 蓝牙,Google Docs,Yahoo Mail,Gmail,Orkut,Skype等.

实际上,我想过滤这些列表选项.我想只显示与电子邮件相关的应用程序,例如Gmail,Yahoo Mail.怎么做?

我在"Android Market"应用程序上看到了这样的例子.

  1. 打开Android Market应用
  2. 打开开发人员指定其电子邮件地址的任何应用程序.(如果你找不到这样的应用程序只需打开我的应用程序: - market:// details?id = com.becomputer06.vehicle.diary.free,或者通过'Vehicle Diary'搜索)
  3. 向下滚动到'DEVELOPER'
  4. 点击"发送电子邮件"

该对话框仅显示电子邮件应用程序,例如Gmail,Yahoo Mail等.它不显示蓝牙,Orkut等.什么代码产生这样的对话?

email android android-intent

549
推荐指数
20
解决办法
36万
查看次数

如何通过Intent打开电子邮件程序(但只有一个电子邮件程序)

我想设置我的应用程序的一部分,允许用户向另一个用户发送快速电子邮件.设置它并不是很难:

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, message);
Intent mailer = Intent.createChooser(intent, null);
startActivity(mailer);
Run Code Online (Sandbox Code Playgroud)

然而,问题在于ACTION_SEND不仅仅被电子邮件程序所接受 - 例如,在我的手机上,Facebook应用程序,Twitter,reddit很有趣,甚至蓝牙也可以作为发送此消息的可行替代方案.对于其中一些(特别是Twitter)来说,这个消息太长了.

有没有办法将选择器限制为只支持长消息(如电子邮件)的应用程序?或者有没有办法检测用户选择的应用程序并适当调整消息?

android

72
推荐指数
3
解决办法
5万
查看次数

Intent.resolveActivity 在 API 30 中返回 null

查看intent.resolveActivity != null 但启动 Intent 会引发 ActivityNotFound 异常,我在打开浏览器或具有深度链接的应用程序时写道:

private fun openUrl(url: String) {
    val intent = Intent().apply {
        action = Intent.ACTION_VIEW
        data = Uri.parse(url)
//        setDataAndType(Uri.parse(url), "text/html")
//        component = ComponentName("com.android.browser", "com.android.browser.BrowserActivity")
//        flags = Intent.FLAG_ACTIVITY_CLEAR_TOP + Intent.FLAG_GRANT_READ_URI_PERMISSION
    }
    val activityInfo = intent.resolveActivityInfo(packageManager, intent.flags)
    if (activityInfo?.exported == true) {
        startActivity(intent)
    } else {
        Toast.makeText(
            this,
            "No application can handle the link",
            Toast.LENGTH_SHORT
        ).show()
    }
}
Run Code Online (Sandbox Code Playgroud)

它不起作用。在 API 30 模拟器中找不到浏览器,而一个常见的解决方案有效:

private fun openUrl(url: String) {
    val intent …
Run Code Online (Sandbox Code Playgroud)

android android-manifest android-intent activitynotfoundexception android-11

56
推荐指数
5
解决办法
2万
查看次数

Android ACTION_SEND意图不填充"收件人"字段

我试图在Android上发送2.1的电子邮件,我有两个问题.

1)首先,To to field不填充

2)类型消息/ rfc822创建一个错误:"没有应用程序可以执行此操作"

    Intent msg = new Intent(Intent.ACTION_SEND);

    //Two types, rfc822 doesnt seem to work in the emulator
    msg.setType("text/plain");
    //msg.setType("message/rfc822");  

    //To:
    msg.putExtra(Intent.EXTRA_EMAIL, mEmailAddress);

    //Body:
    //msg.putExtra(Intent.EXTRA_TEXT, "");

    //Subject
    //msg.putExtra(Intent.EXTRA_SUBJECT, "");

    mActivity.startActivity(Intent.createChooser(msg, "chooser title"));
Run Code Online (Sandbox Code Playgroud)

我在模拟器中运行此代码示例

谢谢马克

android

2
推荐指数
1
解决办法
1588
查看次数