我有一个功能,我想自动截取屏幕截图,然后将其上传到用户首选的电子邮件应用程序。
Date now = new Date();
android.text.format.DateFormat.format("yyyy-MM-dd_hh:mm:ss", now);
try {
// image naming and path to include sd card appending name you choose for file
String mPath = Environment.getExternalStorageDirectory().toString() + "/" + now + ".png";
// create bitmap screen capture
View v1 = getWindow().getDecorView().getRootView();
v1.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
File imageFile = new File(mPath);
FileOutputStream outputStream = new FileOutputStream(imageFile);
int quality = 100;
bitmap.compress(Bitmap.CompressFormat.PNG, quality, outputStream);
outputStream.flush();
outputStream.close();
File filelocation = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + now + mPath);
Uri path = Uri.fromFile(filelocation);
Intent emailIntent = new Intent(Intent.ACTION_SEND);
// set the type to 'email'
emailIntent .setType("vnd.android.cursor.dir/email");
String to[] = {"Enter your email address"};
emailIntent .putExtra(Intent.EXTRA_EMAIL, to);
// the attachment
emailIntent.putExtra(Intent.EXTRA_STREAM, path);
// the mail subject
emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Journey : ");
startActivity(Intent.createChooser(emailIntent , "Select your preferred email app.."));
} catch (Throwable e) {
// Several error may come out with file handling or DOM
e.printStackTrace();
}
}
这是我的功能。它会自动拍摄屏幕并将其存储在我的本地设备上。它还提示用户选择他们的电子邮件应用程序。然后我选择一个应用程序,上面写着“无法附加文件”。我在清单中有读写权限。
答案 0 :(得分:1)
其他应用可能无法访问外部存储空间。此外,一旦将targetSdkVersion
提高到24或更高,您的代码就会在Android 7.0+上崩溃。
切换到using FileProvider
及其getUriForFile()
方法,而不是使用Uri.fromFile()
。
最后,将该磁盘I / O移动到后台线程。
答案 1 :(得分:1)
检查此链接 -
https://www.javacodegeeks.com/2013/10/send-email-with-attachment-in-android.html
和How to send an email with a file attachment in Android
希望得到这个帮助。
答案 2 :(得分:0)
问题是:
Uri path = Uri.fromFile(filelocation);
我用过:
文件filelocation =新文件(MediaStore.Images.Media.DATA + mPath);
Uri myUri = Uri.parse(" file://" + filelocation);
希望这可以帮助任何面临同样问题的人。