- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个应用程序,用户可以在其中填写成绩单并通过选择的电子邮件客户端(在我的例子中为 Gmail)发送。除了文本之外,用户还需要能够附加一张或多张图像,但我似乎无法让它工作(完整的代码附在下面)。
下面是 onActivityResult,它将图像附加到 View 并将其 Uris 放入“userSelectedImageUriList”中。这似乎有效。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==REQUEST_CODE_BROWSE_PICTURE)
{
if(resultCode==RESULT_OK)
{
// Get return image uri. If select the image from camera the uri like file:///storage/41B7-12F1/DCIM/Camera/IMG_20180211_095139.jpg
// If select the image from gallery the uri like content://media/external/images/media/1316970.
Uri fileUri = data.getData();
// Save user choose image file uri in list.
if(userSelectedImageUriList == null)
{
userSelectedImageUriList = new ArrayList<Uri>();
}
userSelectedImageUriList.add(fileUri);
// Create content resolver.
ContentResolver contentResolver = getContentResolver();
try {
// Open the file input stream by the uri.
InputStream inputStream = contentResolver.openInputStream(fileUri);
// Get the bitmap.
Bitmap imgBitmap = BitmapFactory.decodeStream(inputStream);
ImageView imageview = new ImageView(ReportCard.this);
LinearLayout linearLayout = (LinearLayout)findViewById(R.id.imageHolderLayout);
LinearLayout.LayoutParams params = new LinearLayout
.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
// Add image path from drawable folder.
imageview.setImageBitmap(imgBitmap);
imageview.setLayoutParams(params);
linearLayout.addView(imageview);
inputStream.close();
}catch(FileNotFoundException ex)
{
Log.e(TAG_BROWSE_PICTURE, ex.getMessage(), ex);
}catch(IOException ex)
{
Log.e(TAG_BROWSE_PICTURE, ex.getMessage(), ex);
}
}
}
}
接下来,当用户单击发送按钮时,我创建电子邮件 Intent 。
public void sendReport(Context context) {
EditText nameField = (EditText)findViewById(R.id.EditTextName);
EditText emailField = (EditText)findViewById(R.id.EditTextEmail);
EditText locationField = (EditText)findViewById(R.id.EditTextLocation);
EditText dateField = (EditText)findViewById(R.id.EditTextDate);
EditText bodyField = (EditText)findViewById(R.id.EditTextBody);
if(!nameField.getText().toString().matches("") && !emailField.getText().toString().matches("") && !locationField.getText().toString().matches("") && !dateField.getText().toString().matches("") && !bodyField.getText().toString().matches("")) {
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().putString("report_email", emailField.getText().toString()).commit();
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().putString("report_name", nameField.getText().toString()).commit();
String emailBody = "Name: "+nameField.getText()+"\n\n";
emailBody += "Location: "+locationField.getText()+"\n\n";
emailBody += "Time: "+dateField.getText()+"\n\n";
emailBody += "Description: "+bodyField.getText();
Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
// set the type to 'email'
emailIntent.setType("text/plain");
String to[] = {emailField.getText().toString()};
emailIntent.putExtra(Intent.EXTRA_EMAIL, to);
// the attachment
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, userSelectedImageUriList);
// the mail
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Report");
emailIntent.putExtra(Intent.EXTRA_TEXT, emailBody);
startActivity(Intent.createChooser(emailIntent , "Send using..."));
finish();
} else {
Toast.makeText(this, getString(R.string.field_error), Toast.LENGTH_SHORT).show();
}
}
现在,事情到这里就停止了。显示选择器,但未附加图像。 Gmail 打开,但显示一个提示“无法附加文件”。
ReportCard.java
package com.zaewin.reports;
import android.Manifest;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
public class ReportCard extends Activity {
long reportID;
long newRowId;
// Log tag that is used to distinguish log info.
private final static String TAG_BROWSE_PICTURE = "BROWSE_PICTURE";
// Used when request action Intent.ACTION_GET_CONTENT
private final static int REQUEST_CODE_BROWSE_PICTURE = 1;
// Used when request read external storage permission.
private final static int REQUEST_PERMISSION_READ_EXTERNAL = 2;
// Save user selected image uri list.
private ArrayList<Uri> userSelectedImageUriList = null;
// Currently displayed user selected image index in userSelectedImageUriList.
private int currentDisplayedUserSelectImageIndex = 0;
@Override
public void onBackPressed() {
saveReport(ReportCard.this);
finish();
}
// create an action bar button
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.reportmenu, menu);
return super.onCreateOptionsMenu(menu);
}
// handle button activities
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.deleteButton:
new AlertDialog.Builder(this)
.setTitle(R.string.delete)
.setMessage(R.string.delete_prompt)
.setIcon(android.R.drawable.ic_dialog_alert)
.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
Bundle bundle = getIntent().getExtras();
Boolean deletestatus = deleteReport(getApplicationContext(), bundle.getInt("reportID"));
if(deletestatus == true) {
CharSequence text = getString(R.string.delete_success);
Toast toast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT);
toast.show();
finish();
} else {
CharSequence text = getString(R.string.delete_fail);
Toast toast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT);
toast.show();
}
}})
.setNegativeButton(android.R.string.no, null).show();
return true;
case R.id.saveButton:
saveReport(getApplicationContext());
return true;
case R.id.sendButton:
sendReport(getApplicationContext());
return true;
default:
// If we got here, the user's action was not recognized.
// Invoke the superclass to handle it.
return super.onOptionsItemSelected(item);
}
}
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.report_view);
setTitle(R.string.report_card);
Bundle bundle = getIntent().getExtras();
if(bundle != null) {
reportID = bundle.getInt("reportID");
loadReport(reportID);
} else {
setDefaults();
}
final Button button = (Button) findViewById(R.id.buttonAddPicture);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Because camera app returned uri value is something like file:///storage/41B7-12F1/DCIM/Camera/IMG_20180211_095139.jpg
// So if show the camera image in image view, this app require below permission.
int readExternalStoragePermission = ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_EXTERNAL_STORAGE);
if(readExternalStoragePermission != PackageManager.PERMISSION_GRANTED)
{
String requirePermission[] = {Manifest.permission.READ_EXTERNAL_STORAGE};
ActivityCompat.requestPermissions(ReportCard.this, requirePermission, REQUEST_PERMISSION_READ_EXTERNAL);
}else {
openPictureGallery();
}
}
});
}
/* Invoke android os system file browser to select images. */
private void openPictureGallery()
{
// Create an intent.
Intent openAlbumIntent = new Intent();
// Only show images in the content chooser.
// If you want to select all type data then openAlbumIntent.setType("*/*");
// Must set type for the intent, otherwise there will throw android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.GET_CONTENT }
openAlbumIntent.setType("image/*");
// Set action, this action will invoke android os browse content app.
openAlbumIntent.setAction(Intent.ACTION_GET_CONTENT);
// Start the activity.
startActivityForResult(openAlbumIntent, REQUEST_CODE_BROWSE_PICTURE);
}
/* When the action Intent.ACTION_GET_CONTENT invoked app return, this method will be executed. */
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==REQUEST_CODE_BROWSE_PICTURE)
{
if(resultCode==RESULT_OK)
{
// Get return image uri. If select the image from camera the uri like file:///storage/41B7-12F1/DCIM/Camera/IMG_20180211_095139.jpg
// If select the image from gallery the uri like content://media/external/images/media/1316970.
Uri fileUri = data.getData();
// Save user choose image file uri in list.
if(userSelectedImageUriList == null)
{
userSelectedImageUriList = new ArrayList<Uri>();
}
userSelectedImageUriList.add(fileUri);
// Create content resolver.
ContentResolver contentResolver = getContentResolver();
try {
// Open the file input stream by the uri.
InputStream inputStream = contentResolver.openInputStream(fileUri);
// Get the bitmap.
Bitmap imgBitmap = BitmapFactory.decodeStream(inputStream);
ImageView imageview = new ImageView(ReportCard.this);
LinearLayout linearLayout = (LinearLayout)findViewById(R.id.imageHolderLayout);
LinearLayout.LayoutParams params = new LinearLayout
.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
// Add image path from drawable folder.
imageview.setImageBitmap(imgBitmap);
imageview.setLayoutParams(params);
linearLayout.addView(imageview);
inputStream.close();
}catch(FileNotFoundException ex)
{
Log.e(TAG_BROWSE_PICTURE, ex.getMessage(), ex);
}catch(IOException ex)
{
Log.e(TAG_BROWSE_PICTURE, ex.getMessage(), ex);
}
}
}
}
/* After user choose grant read external storage permission or not. */
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if(requestCode==REQUEST_PERMISSION_READ_EXTERNAL)
{
if(grantResults.length > 0)
{
int grantResult = grantResults[0];
if(grantResult == PackageManager.PERMISSION_GRANTED)
{
// If user grant the permission then open choose image popup dialog.
openPictureGallery();
}else
{
Toast.makeText(getApplicationContext(), "You denied read external storage permission.", Toast.LENGTH_LONG).show();
}
}
}
}
public void setDefaults() {
EditText emailField = (EditText)findViewById(R.id.EditTextEmail);
emailField.setText(PreferenceManager.getDefaultSharedPreferences(getBaseContext()).getString("report_email", ""), TextView.BufferType.EDITABLE);
EditText nameField = (EditText)findViewById(R.id.EditTextName);
nameField.setText(PreferenceManager.getDefaultSharedPreferences(getBaseContext()).getString("report_name", ""), TextView.BufferType.EDITABLE);
Calendar c = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm");
String formattedDate = df.format(c.getTime());
EditText dateField = (EditText)findViewById(R.id.EditTextDate);
dateField.setText(formattedDate, TextView.BufferType.EDITABLE);
}
public void loadReport(long reportID) {
ReportDbHelper mDbHelper = new ReportDbHelper(getBaseContext());
SQLiteDatabase db = mDbHelper.getReadableDatabase();
// Define a projection that specifies which columns from the database
// you will actually use after this query.
String[] projection = {
ReportContract.ReportEntry._ID,
ReportContract.ReportEntry.COLUMN_NAME,
ReportContract.ReportEntry.COLUMN_EMAIL,
ReportContract.ReportEntry.COLUMN_LOCATION,
ReportContract.ReportEntry.COLUMN_DATE,
ReportContract.ReportEntry.COLUMN_BODY
};
// Filter results WHERE "title" = 'My Title'
String selection = ReportContract.ReportEntry._ID + " = ?";
String[] selectionArgs = { Long.toString(reportID) };
// How you want the results sorted in the resulting Cursor
String sortOrder = ReportContract.ReportEntry.COLUMN_NAME + " DESC";
Cursor cursor = db.query(
ReportContract.ReportEntry.TABLE_NAME, // The table to query
projection, // The columns to return
selection, // The columns for the WHERE clause
selectionArgs, // The values for the WHERE clause
null, // don't group the rows
null, // don't filter by row groups
sortOrder // The sort order
);
//List itemIds = new ArrayList<>();
while(cursor.moveToNext()) {
EditText emailField = (EditText)findViewById(R.id.EditTextEmail);
emailField.setText(cursor.getString(cursor.getColumnIndexOrThrow(ReportContract.ReportEntry.COLUMN_EMAIL)), TextView.BufferType.EDITABLE);
EditText nameField = (EditText)findViewById(R.id.EditTextName);
nameField.setText(cursor.getString(cursor.getColumnIndexOrThrow(ReportContract.ReportEntry.COLUMN_NAME)), TextView.BufferType.EDITABLE);
EditText dateField = (EditText)findViewById(R.id.EditTextDate);
dateField.setText(cursor.getString(cursor.getColumnIndexOrThrow(ReportContract.ReportEntry.COLUMN_DATE)), TextView.BufferType.EDITABLE);
EditText locationField = (EditText)findViewById(R.id.EditTextLocation);
locationField.setText(cursor.getString(cursor.getColumnIndexOrThrow(ReportContract.ReportEntry.COLUMN_LOCATION)), TextView.BufferType.EDITABLE);
EditText bodyField = (EditText)findViewById(R.id.EditTextBody);
bodyField.setText(cursor.getString(cursor.getColumnIndexOrThrow(ReportContract.ReportEntry.COLUMN_BODY)), TextView.BufferType.EDITABLE);
}
cursor.close();
db.close();
}
public long saveReport(Context context) {
EditText nameField = (EditText)findViewById(R.id.EditTextName);
EditText emailField = (EditText)findViewById(R.id.EditTextEmail);
EditText locationField = (EditText)findViewById(R.id.EditTextLocation);
EditText dateField = (EditText)findViewById(R.id.EditTextDate);
EditText bodyField = (EditText)findViewById(R.id.EditTextBody);
ReportDbHelper mDbHelper = new ReportDbHelper(context);
SQLiteDatabase db = mDbHelper.getWritableDatabase();
// Create a new map of values, where column names are the keys
ContentValues values = new ContentValues();
values.put(ReportContract.ReportEntry.COLUMN_NAME, nameField.getText().toString());
values.put(ReportContract.ReportEntry.COLUMN_EMAIL, emailField.getText().toString());
values.put(ReportContract.ReportEntry.COLUMN_LOCATION, locationField.getText().toString());
values.put(ReportContract.ReportEntry.COLUMN_DATE, dateField.getText().toString());
values.put(ReportContract.ReportEntry.COLUMN_BODY, bodyField.getText().toString());
CharSequence text;
try {
if(reportID == 0) {
newRowId = db.insert(ReportContract.ReportEntry.TABLE_NAME, null, values);
text = getString(R.string.save_success);
} else {
String where = ReportContract.ReportEntry._ID + " = ?";
String[] whereArgs = new String[]{String.valueOf(reportID)};
newRowId = db.update(ReportContract.ReportEntry.TABLE_NAME, values, where, whereArgs);
text = getString(R.string.update_success);
}
Toast toast = Toast.makeText(context, text, Toast.LENGTH_SHORT);
toast.show();
//finish();
} catch(android.database.sqlite.SQLiteException ex) {
text = getString(R.string.save_error);
Toast toast = Toast.makeText(context, text, Toast.LENGTH_SHORT);
toast.show();
}
db.close();
return newRowId;
}
public boolean deleteReport(Context context, Integer reportID) {
ReportDbHelper mDbHelper = new ReportDbHelper(context);
SQLiteDatabase db = mDbHelper.getWritableDatabase();
Boolean status = db.delete(ReportContract.ReportEntry.TABLE_NAME, ReportContract.ReportEntry._ID + "=" + reportID, null) > 0;
db.close();
return status;
}
public void sendReport(Context context) {
EditText nameField = (EditText)findViewById(R.id.EditTextName);
EditText emailField = (EditText)findViewById(R.id.EditTextEmail);
EditText locationField = (EditText)findViewById(R.id.EditTextLocation);
EditText dateField = (EditText)findViewById(R.id.EditTextDate);
EditText bodyField = (EditText)findViewById(R.id.EditTextBody);
if(!nameField.getText().toString().matches("") && !emailField.getText().toString().matches("") && !locationField.getText().toString().matches("") && !dateField.getText().toString().matches("") && !bodyField.getText().toString().matches("")) {
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().putString("report_email", emailField.getText().toString()).commit();
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().putString("report_name", nameField.getText().toString()).commit();
String emailBody = "Ditt namn: "+nameField.getText()+"\n\n";
emailBody += "Plats: "+locationField.getText()+"\n\n";
emailBody += "Tidpunkt: "+dateField.getText()+"\n\n";
emailBody += "Beskrivning: "+bodyField.getText();
Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
ArrayList<Uri> uris = new ArrayList<Uri>();
for (Uri file : userSelectedImageUriList)
{
File fileIn = new File(file.toString());
fileIn.setReadable(true, false);
Uri u = Uri.fromFile(fileIn);
uris.add(u);
}
// set the type to 'email'
emailIntent.setType("text/plain");
String to[] = {emailField.getText().toString()};
emailIntent.putExtra(Intent.EXTRA_EMAIL, to);
// the attachment
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
// the mail
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Rapport från Hamnarbetarappen");
emailIntent.putExtra(Intent.EXTRA_TEXT, emailBody);
startActivity(Intent.createChooser(emailIntent , "Skicka med..."));
finish();
} else {
Toast.makeText(this, getString(R.string.field_error), Toast.LENGTH_SHORT).show();
}
}
}
report_view.xml
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/ScrollView01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scrollbars="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp">
<EditText
android:id="@+id/EditTextName"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/report_name"
android:inputType="textPersonName" >
</EditText>
<EditText
android:id="@+id/EditTextEmail"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/report_email"
android:inputType="textEmailAddress" >
</EditText>
<EditText
android:id="@+id/EditTextLocation"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/report_location" >
</EditText>
<EditText
android:id="@+id/EditTextDate"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/report_date"
android:inputType="datetime" >
</EditText>
<EditText
android:id="@+id/EditTextBody"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/report_description"
android:inputType="textMultiLine"
android:lines="5" >
</EditText>
<LinearLayout
android:id="@+id/relativeLayout1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginBottom="5dp">
<Button
android:id="@+id/buttonAddPicture"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/blue_button"
android:drawableRight="@drawable/ic_action_camera"
android:padding="10dp"
android:text="@string/report_takepicture"
android:textAlignment="center"
android:textColor="@color/actionbar_text" />
</LinearLayout>
<LinearLayout
android:id="@+id/imageHolderLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginBottom="5dp">
</LinearLayout>
</ScrollView>
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.zaewin.reports" android:versionCode="1" android:versionName="1.0">
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="22" />
<uses-feature android:name="android.hardware.camera" android:required="true" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:required="true" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:required="true" />
<uses-permission android:name="android.permission.INTERNET" android:required="true"/>
<application android:theme="@style/CustomActionBarTheme" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:allowBackup="true">
<activity android:label="ReportCard" android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden" android:name=".ReportCard">
<meta-data android:name="android.support.PARENT_ACTIVITY" android:value=".ReportList" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.intent.action.SEND_MULTIPLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="image/*" />
</intent-filter>
</activity>
</application>
</manifest>
最佳答案
我已经解决了。选择图像后,它们将被放入 onActivityResult 中的 ArrayList“userSelectedImageUriList”中。
我只是将此列表添加到 Intent 中,而不是在 sendReport 方法中解析此列表。
工作方法如下:
public void sendReport(Context context) {
EditText nameField = (EditText)findViewById(R.id.EditTextName);
EditText emailField = (EditText)findViewById(R.id.EditTextEmail);
EditText locationField = (EditText)findViewById(R.id.EditTextLocation);
EditText dateField = (EditText)findViewById(R.id.EditTextDate);
EditText bodyField = (EditText)findViewById(R.id.EditTextBody);
if(!nameField.getText().toString().matches("") && !emailField.getText().toString().matches("") && !locationField.getText().toString().matches("") && !dateField.getText().toString().matches("") && !bodyField.getText().toString().matches("")) {
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().putString("report_email", emailField.getText().toString()).apply();
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).edit().putString("report_name", nameField.getText().toString()).apply();
String emailBody = "Name: "+nameField.getText()+"\n\n";
emailBody += "Location: "+locationField.getText()+"\n\n";
emailBody += "Time: "+dateField.getText()+"\n\n";
emailBody += "Description: "+bodyField.getText();
Intent emailIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
// set the type to 'email'
emailIntent.setType("text/plain");
String to[] = {emailField.getText().toString()};
emailIntent.putExtra(Intent.EXTRA_EMAIL, to);
// the attachment - ArrayList populated in onActivityResult
emailIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, userSelectedImageUriList);
// the mail
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Report);
emailIntent.putExtra(Intent.EXTRA_TEXT, emailBody);
startActivity(Intent.createChooser(emailIntent , "Send with..."));
//finish();
} else {
Toast.makeText(this, getString(R.string.field_error), Toast.LENGTH_SHORT).show();
}
}
关于java - 带有多个附件的 Android 电子邮件 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51559115/
在电子邮件中 Received: header 可以合法地多次出现,并且具有互斥的值... Received: three.example.com Received: two.example.co
是否有任何代码/宏可以合并到我的 sas 程序中,一旦我的 sas 代码在运行时发生错误,它会立即给我发送电子邮件? 另外,这封电子邮件是否可能包含发生的错误? 最佳答案 是的……也不是…… 这是可能
我有一个包含三个 td 的表格,每个表格都需要包含图像。 td 的宽度和高度是固定的,但图像大小可以变化。目标是在不扭曲单元格或图像本身的情况下拟合图像。不能使用 background-image 属
首先非常感谢大家过去提出的宝贵建议,我们正在创建一个应用程序,在某些事件中想要将电子邮件/短信发送到我们已经尝试过 openURL 调用的指定电话号码,但它会打开现有的内置iPhone 的电子邮件/短
我正在使用 apache commons mail 发送电子邮件。不幸的是,我遇到了以下异常: org.apache.commons.mail.EmailException: Sending the
我可以在我的 ~/.hgrc 文件中设置我常用的电子邮件地址,但是有没有办法为一个 hg 项目指定我想被称为不同的名称/电子邮件(类似到项目目录中的 git 的 .git/config 文件覆盖 ~/
$message = 'New user registration\n\n There is a new submission on the site and below are the detail
使用 outlook 我可以发送在邮件正文中插入图像的电子邮件(不是作为附件)。我如何使用 PHP 中的 mail() 函数来做到这一点? 最佳答案 我会推荐 Swift Mailer: http:/
以下代码的目标是将所选图表粘贴到我的文本下方的电子邮件正文中。但是,它继续将其粘贴在我的文本上方。我该如何更改它以使其粘贴在下面?谢谢! Set OutApp = CreateObject("Outl
首先,我知道不建议使用正则表达式发送电子邮件,但我必须对此进行测试。 我有这个正则表达式: \b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b 在 Java 中,我这样
如何在没有任何第三方程序的情况下从 Python 发送电子邮件? 最佳答案 使用Python email和 smtplib模块。示例:http://docs.python.org/library/em
我目前正在使用此代码在 html 表中显示 mysql 记录 "; . . echo ' '. $row["Email1"] . ' '; . . echo ""; }
在电子邮件中使用 HTML 时,是否可以仅将链接的一部分着色为特定颜色? 我试过: red part of link normal part ...我知道如果我拆分链接是可能的,但我正在努力将它们保持
我正在处理一封 html 电子邮件,我有一个非常简单的元素 (ul),我想将它移到页面下方。 我检查了campaign monitor's guide并且不支持负边距,或者 position: abs
我使用表格创建了我的 HTML 电子邮件,该表格有一个背景图像,在大多数基于 Web 的电子邮件客户端中都能正常显示。 我正在努力让背景图片显示在 Outlook 中。 我最近的尝试,我尝试了以下操作
我对 PHP/CSS 和一般编程还很陌生。 我想改变文本区域中文本的格式,就像在这里所做的那样,例如,当为突出显示的文本添加标签“代码示例”时,它会缩进它,或者当将它设置为粗体时,它会加粗它。 这样做
嘿,你能推荐我哪些 C++ 库或类可用于在 C++ 中通过 SMTP 发送电子邮件。我在 Windows 平台上。我需要一个支持附件和 SSL 连接的库。有哪些可用选项。我不打算实现我自己的 :) 问
想知道是否可以在 HTML 电子邮件中包含一个表单。我要做的就是将图像输入提交到 Paypal 购买页面。我希望它直接进入 Paypal ,而无需先进入营销页面... 我会拥有 paypal 要求的完
我负责“ reshape ”我们的 IT 部门通信。我想用纯 HTML/CSS 来发送我们的电子邮件通知,以确保它的可移植性。 下面是代码,它在 Outlook 中看起来完全符合我的要求,但是一旦将内
我正在学习编写响应式电子邮件模板。目前我有:https://jsfiddle.net/q12yg2z6/
我是一名优秀的程序员,十分优秀!