尝试将创建的文本文件作为电子邮件附件发送 - 从默认文件夹

2023-12-28

我正在尝试一些简单的事情,例如创建一个文本文件,然后将其作为附件发送。虽然如果我使用 SD 卡它工作正常,但我不知道将它放在“标准数据文件夹”中的哪里,所以我的应用程序实际上适用于没有 SD 卡的每个人(并且该文件有点不可见)

当这段代码有效时,我将问题放在 *评论。

创建文件时:

String FILENAME = "myFile.txt";
    String string = "just something";

    // create a File object for the parent directory
    File myDirectory = new File("/sdcard/myDir/");  // ******** <- what do I have to put HERE for standard data folder????
    // have the object build the directory structure, if needed.
    myDirectory.mkdirs();
    // create a File object for the output file
    File outputFile = new File(myDirectory, FILENAME);
    // now attach the OutputStream to the file object, instead of a String representation
    FileOutputStream fos = null;
   //always have to put try/catch around the code - why? I don't know
    try {
        fos = new FileOutputStream(outputFile);
    } catch (FileNotFoundException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }

     //again have to put try/catch around it - otherwise compiler complains
    try {
        fos.write(string.getBytes());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    }

发送文件时:

public void doSendFile() {
    String fileName = "/sdcard/myDir/myFile.txt"; // ******** <- what do I have to put HERE for standard data folder????
    Intent i = new Intent(Intent.ACTION_SEND);
    try {
        mainDataManager.logFileHandle.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    i.setType("text/plain");
    i.putExtra(Intent.EXTRA_EMAIL, new String[] { "[email protected] /cdn-cgi/l/email-protection" });
    i.putExtra(Intent.EXTRA_SUBJECT, "subject");
    i.putExtra(Intent.EXTRA_TEXT, "text");
    Log.i(getClass().getSimpleName(),
        "logFile=" + Uri.parse("file://" + fileName));
    i.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + fileName));

    try {
        startActivity(Intent.createChooser(i, "Send mail..."));
    } catch (android.content.ActivityNotFoundException ex) {
        Toast.makeText(getBaseContext(),
            "There are no email clients installed.", Toast.LENGTH_SHORT)
            .show();
    }

    }

我发现该文件在创建时似乎存储在“data/data/com.xxx.xxxx/databases/myFile.txt”中。 但是当我在附件中使用它时,没有发送任何内容。

所以基本上我需要知道如何将文件存储在本地内存中,然后从那里发送它。我想,因为不是每个人都有外部存储 SD 卡。

Thanks!


这是因为 SD 卡不受保护,因此您可以像您一样以标准 java 方式写入该卡。

为了写入 Android 文件系统,您不能使用它,因为每个文件都使用应用程序密钥进行保护,以避免其他应用程序使用它。

您应该使用 openFileOutput() 请参阅本教程以获取更多信息:

http://www.anddev.org/working_with_files-t115.html http://www.anddev.org/working_with_files-t115.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试将创建的文本文件作为电子邮件附件发送 - 从默认文件夹 的相关文章

  • SQLite 中的 where 子句在 android 中不起作用:(

    当尝试在 SQLite 中查询某些数据时 我遇到了一个恼人的错误 这是我的代码 Cursor cursor db query TABLE IMAGES new String id name compareToThis null null n
  • 如何使用 Espresso 访问外部网站上的元素

    使用 espresso 我们单击 登录 按钮 该按钮将启动一个外部网站 Chrome 自定义选项卡 您可以在其中登录 然后重定向回我们的 Android 应用程序 Espresso 有没有办法 1 验证正在启动的 URL 是否正确2 访问网
  • onSaveInstanceState 之后无法执行此操作(onClick 首选项)

    这是我的PreferenceActivity 我的主要活动的内部类 public static class TestSettings extends PreferenceActivity implements Preference OnPr
  • Java中如何动态添加charsequence[]中的数据?

    初始化的一种方法charsequence is charsequence item abc def 但我不想以这种方式初始化它 有人可以建议其他方式吗 比如我们初始化的方式string arrays 首先 修复变量声明 charsequen
  • Android Studio 1.2.1.1 中 Gradle 项目刷新失败

    我在全新安装的 Android Studio v 1 2 1 1 上创建了示例项目 但遇到了以下错误消息 Gradle project refresh failed in Android Studio 1 2 1 1 见下图 所以我试图在谷
  • 如何在android上模拟PC的Esc键

    我正在写一个可以在android上玩flash的应用程序 但是我无法模拟ESC键 因为很多flash游戏需要ESC键才能返回主菜单 没有这个键我制作的应用程序将毫无用处 谁能告诉我如何模拟这个 我可以只发送一个密钥代码吗 但我也不知道键码
  • 某些设备上的启动画面扭曲

    我在修复 Android 上的启动画面扭曲问题时遇到问题 我正在使用 React Native 请注意 这种情况仅发生在某些设备上 例如 我有一台 Android 版本为 4 2 2 的三星 启动画面不扭曲 而 Android 版本为 8
  • ArgumentMatchers.any 不得为 null

    我正在尝试测试ViewModel以确保实时数据得到正确更新 然而使用时ArgumentMatchers any 它失败了IllegalStateException saying ArgumentMatchers any mViewModel
  • 对超类方法的调用应该是第一个语句吗?

    语音识别的结果可以在onActivityResult int requestCode int resultCode Intent data 方法 如图这个例子 http developer android com resources sam
  • iOS 上邮件到达时收到通知吗?

    当邮件到达标准邮件应用程序时 有没有办法让应用程序收到通知 更准确地说 我想编写一个应用程序 它能够从标准邮件应用程序读取传入的电子邮件 其中包含自定义 txt 格式的新联系人或事件 然后 应用程序应将此新联系人 事件添加到 ipad 反之
  • 如何使用特定选项卡启动活动?

    我已经浏览了许多示例 问题和教程 但我从未见过使用特定选项卡启动活动 启动新意图 我知道可以使用 setCurrentTab切换到选项卡 但这只能从父活动选项卡内部完成 从另一个活动启动一个活动中包含的特定选项卡怎么样 是否可以 如果是这样
  • 如果我清理了反向引用,我是否可以观察 ViewModel?

    建议的实施方式ViewModel是通过使用来公开变化的数据LiveData活动 片段和视图的对象 有一些情况 当LiveData不是一个理想的答案或根本没有答案 自然的选择是将观察者模式应用于ViewModel 使其成为可观察的 注册观察员
  • 尝试在 android 中使用 Google Maps Android API v2 显示 StreetView 但无法使其正常工作

    我很长时间以来一直在尝试在 Android 中显示特定位置的街景 但不幸的是未能成功 我需要的是 如果我向地图提供位置 LAT LONG 它应该显示该特定位置的街景 以下是显示地图 3D 地图 混合地图 卫星视图等的工作代码 但不显示街景
  • 通过使用 DownloadManager,我如何查看设备中所有活动/正在运行的下载?

    通过使用 DownloadManager 我如何查看设备中所有活动 正在运行的下载 My code DownloadManager Query query null Cursor c null DownloadManager downloa
  • IntelliJ 12 中的 Android Hello World - 找不到 android.app.Activity 类

    请看下文 我感觉 SDK 配置不正确 但我不知道如何解决 我尝试用谷歌搜索答案 但没有人遇到这个确切的问题 难道是我的Java版本不对 这两个 SDK 似乎可能相互冲突 我通过以下方式制作了这个项目 创建新项目 Android gt 应用模
  • 加载带有月份标题的 recyclerview 不同类型适配器

    如果从 api 获取不同的月份名称 则尝试将月份名称显示为标题 在这里 我加载月份标题 但是当我加载标题时 它不会加载其他视图 如果数据不同 我需要将月份加载为标题 并且还加载其他视图持有者 我看到一些例子 他们都在 Model 类中使用
  • Android SSH 示例代码

    我想创建一个 android 活动 用于与远程设备 通过 Wifi 建立 SSH 会话并在远程设备上执行一些 Linux 命令 任何人都可以获得一个快速 简短的示例 用于使用以下命令进行连接 身份验证和发送远程命令Trilead https
  • Android Studio-公司域名

    在Android Studio中 当您创建新项目时 系统会提示您输入域名 我已经知道您可以制作一个 但是如果您想在 Google Play 商店上分发您的应用程序怎么办 即使我永远不会使用我的域 我是否需要购买一个网络域来分发我的应用程序
  • 在 Android 中将列表传递给另一个 Activity

    我已经创建了一个列表 并希望将该列表传递给另一个活动 但当我创建意图时 我在 putExtra 语句上收到错误 只是想知道是否有任何简单的方法来传递字符串列表而不是单个字符串 Thanks private List
  • Android:如何获取所有可用意图过滤器的列表?

    我搜索了 Android 文档 但由于某些疯狂的原因 我无法找到所有可用意图过滤器的列表 我正在寻找一个意图过滤器 它可以执行诸如通过广播接收器通知我特定活动 例如浏览器或电子邮件 已启动或位于前台之类的操作 有人能帮我吗 PackageE

随机推荐

  • 使用来自 python 2.4 的输入重定向运行 shell 命令?

    我想要实现的是启动以下 shell 命令 mysql h hostAddress u userName p userPassword databaseName lt fileName 在 python 2 4 脚本中 有一些类似的内容 cm
  • ASP.NET 全球化:Culture="auto" 页面指令导致中性文化崩溃?

    我遇到了使用内置全球化工具的 ASP NET 应用程序崩溃的情况 在具有 Culture auto 指令的 ASP NET 页面上 使用中性文化作为浏览器语言 例如 zh Hans 的用户将产生以下异常 文化 zh Hans 是一种中立文化
  • Scrapy hxs.select() 未选择所有结果

    我正在尝试通过scrapy来获取赔率here http www paddypower com football football matches premier league 目前只是尝试使用以下蜘蛛记录结果 def parse self
  • 复合 JS 关系访问

    我定义了 2 个模式对象 如下所示 用于 mongodb var User describe User function property name String property email String property passwor
  • OpenMP 分发中的 SECTIONS 指令如何工作?

    在OpenMP中使用时omp sections 线程是否会被分配到内部的块中sections 或者将每个线程分配给每个部分 When nthreads 3 pragma omp sections pragma omp section pri
  • 失踪的铁轨宝石

    我知道这个问题已经在这个网站上被问过多次 但在深入研究其他答案后 我仍然对如何解决这个问题一无所知 我刚刚从生产服务器中提取了 Rails 应用程序的副本 但出现以下错误 缺少 Rails 2 3 4 gem 请gem install v
  • 如何在 Flutter 中禁用 FlatButton 的启动突出显示?

    我有一个扁平按钮 我不希望单击按钮时突出显示 我尝试将飞溅颜色更改为透明 但这不起作用 这是我的 FlatButton 的代码 Widget button new Container child new Container padding
  • PHP 如何将数据追加到序列化数组中

    如果我有一个序列化数组 如何向其附加更多值 我应该先反序列化它 gt 添加数据然后再次序列化它吗 Yes function addItem serializedArray item a unserialize serializedArray
  • 为什么 golangticker.Stop() 在tickerTest1中不起作用?

    我知道Stop函数无法关闭通道 我只是对两个不同的结果感到困惑tickerTest1 and tickerTest2 package main import time log func tickerTest1 ticker time New
  • 如果我只有任务 ID,我可以获得 celery 任务的参数吗?

    如果我有原来的任务 我可以从中得到论据task request args 但是如果我只有任务 ID 有没有办法获取参数 看起来没有办法从AsyncResult对象 据我所知 没有办法重新创建任务 我想这样做是因为我有一个前端可以轮询后端以获
  • Clang 无法在 std::function 实例化中扩展参数包

    编译的代码片段std c 17作为唯一的编译器标志 使用 GCC 9 1 成功编译 Godbolt https godbolt org z QKJomx 使用 Clang 8 0 0 发出编译器错误 代码片段下方的错误 Godbolt ht
  • SQL Server 性能提示[重复]

    这个问题在这里已经有答案了 可能的重复 SQL WHERE 子句是否短路计算 https stackoverflow com questions 789231 is the sql where clause short circuit ev
  • 使用 python/PIL 自动裁剪图像

    谁能帮我弄清楚我的图像自动裁剪脚本中发生了什么 我有一个带有大透明区域 空间的 png 图像 我希望能够自动裁剪该空间并保留必需品 原始图像有一个方形画布 最好是矩形 仅封装分子 here s the original image 通过谷歌
  • Prolog - 简化导数

    所以我这个学期才开始使用 Prolog 并完成了实现一个非常基本的作业d function variable derivative 我这样做是这样的 d X X 1 d C X 0 atomic C C X d X E X E X E 1
  • 错误:没有为控制器定义“_sonata_admin”

    我按照文档添加自定义路线 当我单击列表视图中的按钮时 出现错误 没有 sonata admin为控制器定义 UserController以及当前的路线resetPassword 文档 http sonata project org bund
  • C#:调用 Bitmap.save() 后 Dispose() 一个 Bitmap 对象?

    我有这个 Bitmap bmp new Bitmap image image processing bmp Save path fileName 我想知道是否需要打电话bmp Dispose 在此代码之后 提前致谢 我会用using块和Pa
  • 处理过期航空里程的流程

    我正在开发一个需要处理过期航空里程的应用程序 里程可以使用 但如果在特定日期之前未使用 里程就会过期 我想确保我的里程数已过期 但如果已使用 则不要过期 因此 我必须在过期之前检查在给定日期范围内是否使用了足够的里程 以下是我的初步想法 有
  • UIWebView YouTube 嵌入视频未加载

    我在获取通过 UIWebView 嵌入到我正在制作的 iOS 应用程序中的视频时遇到一些问题 iframe 播放器加载完全正常 但是当我点击播放按钮时 白色旋转器出现一秒钟然后消失 只留下一个黑框如果我触摸黑框 我会得到标题和 i 按钮 但
  • 从数据库输出到文本区域

    我试图通过这样做将数据库字段值放入文本区域 但它不起作用
  • 尝试将创建的文本文件作为电子邮件附件发送 - 从默认文件夹

    我正在尝试一些简单的事情 例如创建一个文本文件 然后将其作为附件发送 虽然如果我使用 SD 卡它工作正常 但我不知道将它放在 标准数据文件夹 中的哪里 所以我的应用程序实际上适用于没有 SD 卡的每个人 并且该文件有点不可见 当这段代码有效