gpt4 book ai didi

android - 如何将字符串数组传递给android电子邮件 Intent

转载 作者:太空宇宙 更新时间:2023-11-03 13:10:56 25 4
gpt4 key购买 nike

我正在尝试在 kotlin 中以编程方式发送电子邮件。

这是我的代码,是我从网上找到的 java 示例翻译过来的。

package com.example.emaildemo

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

class MainActivity: AppCompatActivity() {

override fun onCreate(savedInstanceState:Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val editTextTo:EditText = findViewById(R.id.editText)
val editTextSubject:EditText = findViewById(R.id.editText2)
val editTextMessage:EditText = findViewById(R.id.editText3)
val button1:Button = findViewById(R.id.button)

button1.setOnClickListener(View.OnClickListener{

val to = editTextTo.getText().toString()
val subject = editTextSubject.getText().toString()
val message = editTextMessage.getText().toString()

val intent = Intent(Intent.ACTION_SEND)
val addressees = arrayOf(to)
intent.putExtra(Intent.EXTRA_EMAIL, addressees)
intent.putExtra(Intent.EXTRA_SUBJECT, subject)
intent.putExtra(Intent.EXTRA_TEXT, message)
intent.setType("message/rfc822")
startActivity(Intent.createChooser(intent, "Select Email Sending App :"))
})
}
}

它似乎工作正常,只是“收件人”字段未复制到用户的电子邮件应用程序中。 java代码说:

intent.putExtra(Intent.EXTRA_EMAIL, new String[]{TO}); 

和安卓开发者docs假设 Intent.EXTRA_EMAIL 是“所有“收件人”电子邮件地址的字符串数组。”我应该如何定义 addressees 变量?

编辑:我发现如果我硬编码我的电子邮件地址,

val addressees = arrayOf("me@email.com")

然后该应用程序将按预期运行。当我进入电子邮件应用程序时,我的地址在“收件人:”字段中,我可以向自己发送邮件。但是,如果我在程序中键入相同的地址,它不会显示在电子邮件客户端中。此外,当我在调试器下查看它时, Intent 显示两种方式完全相同的值。越来越好奇。

EDIT2

这是我的 XML 文件。 (不知何故,我无法正确缩进前两行。)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18dp"
android:text="To"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />

<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18dp"
android:text="Subject"
android:id="@+id/textView2"
android:layout_below="@+id/editText"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />

<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true" />

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18dp"
android:text="Message"
android:id="@+id/textView3"
android:layout_below="@+id/editText2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />

<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="textMultiLine"
android:lines="4"
android:id="@+id/editText3"
android:layout_below="@+id/textView3"
android:layout_centerHorizontal="true" />

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click Here To Send Email from android application programmatically"
android:id="@+id/button"
android:layout_below="@+id/editText3"
android:layout_centerHorizontal="true"
android:layout_marginTop="44dp" />
</RelativeLayout>

最佳答案

您的 TO 声明看起来正确,我认为您不需要明确(即使用 arrayOf<String>(to) )。

编辑

根据您的上次更新,to未被识别为 String .以下代码有效...

            val to = "person@gmail.com"
val subject = "Test"
val message = "Test"

val intent = Intent(Intent.ACTION_SEND)
val addressees = arrayOf(to)
intent.putExtra(Intent.EXTRA_EMAIL, addressees)
intent.putExtra(Intent.EXTRA_SUBJECT, subject)
intent.putExtra(Intent.EXTRA_TEXT, message)
intent.setType("message/rfc822")
startActivity(Intent.createChooser(intent, "Send Email using:"));

调用editTextTo.getText().toString()正在返回一个构建器或除真实 String 以外的其他东西.而是尝试调用 arrayOf(to.toString())

EDIT2

这是一个有效的代码示例,即填写电子邮件应用程序中的“收件人”字段。

package com.x.edittextexp

import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.EditText

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

val button: Button = findViewById(R.id.button)
val editTextTo: EditText = findViewById(R.id.editTextTo)

button.setOnClickListener(View.OnClickListener {
val to = editTextTo.getText().toString()
val subject = "Test"
val message = "Test"

val intent = Intent(Intent.ACTION_SEND)
val addressees = arrayOf(to)
intent.putExtra(Intent.EXTRA_EMAIL, addressees)
intent.putExtra(Intent.EXTRA_SUBJECT, subject)
intent.putExtra(Intent.EXTRA_TEXT, message)
intent.setType("message/rfc822")
startActivity(Intent.createChooser(intent, "Send Email using:"));
})
}
}

xml 看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical">

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="person@gmail.com"
android:id="@+id/editTextTo"/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="BUTTON"
android:id="@+id/button"/>
</LinearLayout>

如您所见,差异微乎其微,但这行得通,而您的行不通。我怀疑问题出在您的 XML 文件中。可以发帖吗?

关于android - 如何将字符串数组传递给android电子邮件 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45402991/

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