创建 Uri uri 时应用程序崩溃

2024-02-23

package com.example.renu.customlead;

import android.content.Context;
import android.content.ContextWrapper;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.content.FileProvider;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Calendar;

/**
 * Created by RENU on 2/4/2018.
 */

public class MainLandingPage extends AppCompatActivity {
    private String filename = "MySampleFile.txt";
    private String filepath = "MyFileStorage";
    File myInternalFile;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
    }

    public void AddLead(View view) {
        DatabaseHelper dbhelper = new DatabaseHelper(getApplicationContext());
        SQLiteDatabase db = dbhelper.getReadableDatabase();
        Cursor curCSV = db.rawQuery("SELECT * FROM Leads ", null);
        int n=curCSV.getCount();
        if (n >= 1) {
            Intent intent = new Intent(this, MainActivity3.class);
            startActivity(intent);
        }
        else{
            Toast.makeText(MainLandingPage.this, "No Field has been declared", Toast.LENGTH_SHORT).show();
        }

    }

    public void SendCsv(View view) {
        sendEmail();
    }

    public void DeleteRecord(View view) {
        DatabaseHelper dbhelper = new DatabaseHelper(getApplicationContext());
        SQLiteDatabase db = dbhelper.getReadableDatabase();
        Cursor curCSV = db.rawQuery("SELECT * FROM Leads where id <> 1", null);
        int n = curCSV.getCount();
        if (n > 1) {
            deleteRecordALL();
            Toast.makeText(MainLandingPage.this, "Leads Deleted", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(MainLandingPage.this, "No Leads to be Deleted", Toast.LENGTH_SHORT).show();
        }
    }

    public void DeleteAll(View view) {
        DatabaseHelper dbhelper = new DatabaseHelper(getApplicationContext());
        SQLiteDatabase db = dbhelper.getReadableDatabase();
        Cursor curCSV = db.rawQuery("SELECT * FROM Leads ", null);
        int n=curCSV.getCount();
        if (n > 1) {
            deleteRecordALL();
            Toast.makeText(MainLandingPage.this, "Leads Deleted", Toast.LENGTH_SHORT).show();
        }
        else{
            Toast.makeText(MainLandingPage.this, "No Leads to be Deleted", Toast.LENGTH_SHORT).show();
        }

    }

    protected void deleteRecordALL() {
        DatabaseHelper dbhelper = new DatabaseHelper(getApplicationContext());
        //SQLiteDatabase db = dbhelper.getReadableDatabase();
        //db1.execSQL("delete from Leads");
        Log.d("Delete: ", "Deleting ..");
        dbhelper.deleteRec();

    }
    public void createField(View view){
        Intent intenti = new Intent(MainLandingPage.this, MainActivity.class);
        startActivity(intenti);
    }

    // export sqlite content to csv
//    private void exportDB() {
//
//
//    }
    protected void sendEmail() {

        //File dbFile = getDatabasePath("LeadsManager.db");   /storage/emulated/0
        DatabaseHelper dbhelper = new DatabaseHelper(getApplicationContext());

        ContextWrapper contextWrapper = new ContextWrapper(getApplicationContext());
        File directory = contextWrapper.getDir(filepath, Context.MODE_PRIVATE);
        myInternalFile = new File(directory , filename);
        //File file = new File(Environment.getExternalStorageDirectory() + File.separator + "data.csv");

        /*File mfolder = new File(getFilesDir().getPath());
        File file = new File("/storage/emulated/0/Android/data/com.example.renu.customlead/files" + "/data.csv");

        if (!mfolder.exists()) {
            mfolder.mkdirs();
        }
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        Log.e("Main file name", file.getName());
        Log.e("Internalpath",getCacheDir().getPath());
        Log.e("Path",getFilesDir().getPath());
        Log.e("fileexists", String.valueOf(file.exists()));
        Log.e("Path",Environment.getExternalStorageDirectory().getPath());
*/
        try {
            //file.createNewFile();
            //CSVWriter csvWrite = new CSVWriter(new FileWriter(file));


            FileOutputStream fOut = new FileOutputStream(myInternalFile);
            OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut);
            SQLiteDatabase db = dbhelper.getReadableDatabase();

            Cursor curCSV = db.rawQuery("SELECT * FROM Leads ", null);
            //myOutWriter.writeNext(curCSV.getColumnNames());
            while (curCSV.moveToNext()) {
                //Which column you want to exprort
                String arrStr[] = {curCSV.getString(0), curCSV.getString(1)};
                Log.e("firstsql",arrStr[1]);
                Log.e("firstsql1",arrStr[0]);
                //myOutWriter.append(arrStr[0]);
                myOutWriter.append(arrStr[1]);
                myOutWriter.append("\n");
            }
            myOutWriter.close();
            curCSV.close();
            Log.e("Main", String.valueOf(myInternalFile.length()));

        } catch (Exception sqlEx) {
            Log.e("MainActivity", sqlEx.getMessage(), sqlEx);
        }
        Log.i("Send email", "");
        String[] TO = {""};
        String[] CC = {""};
        Intent emailIntent = new Intent(Intent.ACTION_SEND);
//        emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        emailIntent.setData(Uri.parse("mailto:"));
        emailIntent.setType("text/plain");
        emailIntent.putExtra(Intent.EXTRA_EMAIL, TO);
        emailIntent.putExtra(Intent.EXTRA_CC, CC);
        emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Lead created as of " + Calendar.getInstance().getTime());
        emailIntent.putExtra(Intent.EXTRA_TEXT, myInternalFile.getAbsolutePath());
//        emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(myInternalFile));
        Log.e("ppppp", myInternalFile.getName());
        emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
//        emailIntent.setType("text/*");
      Uri uri = FileProvider.getUriForFile(MainLandingPage.this, "com.example.renu.customlead",myInternalFile);
        //data/user/0/com.example.renu.customlead/app_MyFileStorage/MySampleFile.txt
        //com.example.renu.customlead/files/MySampleFile.txt
        //Uri uri = Uri.parse("content://com.example.renu.customlead/files/MySampleFile.txt");
        emailIntent.putExtra(Intent.EXTRA_STREAM, uri);

        Log.e("xxyyxx", myInternalFile.getName());
        Log.e("xxyyxxx", myInternalFile.getPath());
        Log.e("xxyyxxxx", myInternalFile.getAbsoluteFile().getName());
        String myData="";
        try {
            FileInputStream fis = new FileInputStream(myInternalFile);
            DataInputStream in = new DataInputStream(fis);
            BufferedReader br =
                    new BufferedReader(new InputStreamReader(in));
            String strLine;
            while ((strLine = br.readLine()) != null) {
                myData = myData + "\n" + strLine;
            }
            Log.e("aaaaaaaaaaaaaaa",myData);
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        emailIntent.putExtra(Intent.EXTRA_TEXT, myData);
        try {
            //startActivity(Intent.createChooser(emailIntent, "Send mail..."));
            startActivityForResult(Intent.createChooser(emailIntent,"Sending mail Done "),1);
            finish();
            Log.i("Finished sending email", "email xxxx");
        } catch (android.content.ActivityNotFoundException ex) {
            Toast.makeText(MainLandingPage.this, "There is no email client installed.", Toast.LENGTH_SHORT).show();
        }
    }
}

程序失败并出现以下错误

03-07 11:50:24.524 27630-27630/? E/AndroidRuntime: FATAL EXCEPTION: main
           Process: com.example.renu.customlead, PID: 27630
           java.lang.IllegalStateException: Could not execute method for android:onClick
               at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:293)
               at android.view.View.performClick(View.java:6261)
               at android.widget.TextView.performClick(TextView.java:11159)
               at android.view.View$PerformClick.run(View.java:23748)
               at android.os.Handler.handleCallback(Handler.java:751)
               at android.os.Handler.dispatchMessage(Handler.java:95)
               at android.os.Looper.loop(Looper.java:154)
               at android.app.ActivityThread.main(ActivityThread.java:6776)
               at java.lang.reflect.Method.invoke(Native Method)
               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
            Caused by: java.lang.reflect.InvocationTargetException
               at java.lang.reflect.Method.invoke(Native Method)
               at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288)
               at android.view.View.performClick(View.java:6261) 
               at android.widget.TextView.performClick(TextView.java:11159) 
               at android.view.View$PerformClick.run(View.java:23748) 
               at android.os.Handler.handleCallback(Handler.java:751) 
               at android.os.Handler.dispatchMessage(Handler.java:95) 
               at android.os.Looper.loop(Looper.java:154) 
               at android.app.ActivityThread.main(ActivityThread.java:6776) 
               at java.lang.reflect.Method.invoke(Native Method) 
               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496) 
               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386) 
            Caused by: java.lang.IllegalArgumentException: Failed to find configured root that contains /data/data/com.example.renu.customlead/app_MyFileStorage/MySampleFile.txt
               at android.support.v4.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:711)
               at android.support.v4.content.FileProvider.getUriForFile(FileProvider.java:400)
               at com.example.renu.customlead.MainLandingPage.sendEmail(MainLandingPage.java:182)
               at com.example.renu.customlead.MainLandingPage.SendCsv(MainLandingPage.java:61)
               at java.lang.reflect.Method.invoke(Native Method) 
               at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
               at android.view.View.performClick(View.java:6261) 
               at android.widget.TextView.performClick(TextView.java:11159) 
               at android.view.View$PerformClick.run(View.java:23748) 
               at android.os.Handler.handleCallback(Handler.java:751) 
               at android.os.Handler.dispatchMessage(Handler.java:95) 
               at android.os.Looper.loop(Looper.java:154) 
               at android.app.ActivityThread.main(ActivityThread.java:6776) 
               at java.lang.reflect.Method.invoke(Native Method) 
               at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496) 
               at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386) 

None

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

创建 Uri uri 时应用程序崩溃 的相关文章

  • 如何使用android ndk r9b为Android编译FFMPEG

    我想设计一个Android应用程序 可以通过FFMPEG命令播放和编辑视频 但我不知道如何在Android上使用FFMPEG 我尝试过从Google搜索到的许多方法 但它们太旧了 无法实现 现在 FFMPEG的最新版本是2 1 1 Andr
  • setOnTouchListener() 给我一个错误

    button setOnTouchListener new OnTouchListener public void onClick View v Toast makeText MainActivity this YOUR TEXT 5000
  • 测试 Hessian remoting-servlet.xml

    我们使用 Hessian 来实现富客户端和服务器之间的通信 由于移动和重命名 remoting servlet xml 中的条目有时会与实际的类名不匹配 因此 我正在寻找一种简单的方法来测试远程处理 xml 有没有简单的方法可以做到这一点
  • Android Studio 3.0 - 设置未保存

    我已将 文件 gt 设置 gt 编辑器 gt 代码样式 中的 右边距 列 从默认的 100 增加到 140 不幸的是 每次重新启动 Android Studio 后 该边距都会重置 我还尝试导出和导入我的设置 但这并不能阻止重置右边距 希望
  • 改变换行行为

    我可以在 TextView 中使用 Spannable 创建具有不同外观 下划线 删除线等的跨度 我怎样才能做同样的事情来改变换行行为 特别是 我不希望电子邮件地址在中间换行 我希望它像一个单词一样 I tried 包裹在一起跨度 http
  • 如何在打开导航抽屉时使背景 Activity 变小?

    我想做我的背景Activity打开时稍微小一点Navigation Drawer 模拟存在的效果Airbnb应用 我想最好的解释是截图 但重点不是让 View 变小 而是让它成为与 Drawer 打开 关闭动画同步的动画 因此 如果您开始打
  • 将 try catch finally 块放入另一个 finally 块中

    try catch finally try catch finally 上面的代码好不好 是的 你可以这样做 实际上 在处理想要正确关闭的流时 您甚至需要这样做 InputStream in try catch finally try in
  • java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseException

    我想将 apache cli 添加到我的应用程序中 但我有问题 当我尝试运行它时显示这些错误 Error A JNI error has occurred please check your installation and try aga
  • Guava MultiSet 与 Map?

    我对Multiset的理解是一个带有频率的集合 但是我总是可以使用Map来表示频率 还有其他原因使用Multiset吗 优点Multiset
  • 如何从 SD 卡中删除文件

    我正在创建一个文件作为电子邮件的附件发送 现在我想在发送电子邮件后删除图像 有没有办法删除文件 我努力了myFile delete 但它没有删除该文件 我在 Android 上使用此代码 因此编程语言是 Java 使用通常的 Android
  • 设置 LinearLayout 的最大宽度

    如何设置水平线的最大宽度LinearLayout 因此 如果内容较短 例如某些文本 布局会缩小 如果内容较长 则布局不会扩展超过某个最大宽度值 我更喜欢在 XML 级别执行此操作 这就是我所需要的超出了之前答案中的建议 https stac
  • SWIG C 函数指针和 JAVA

    我有一些 C 代码 其中一个方法有一个函数指针作为参数 我正在尝试在我的 Android 应用程序中使用 C 代码 我决定使用 SWIG 来完成生成我需要的 java 文件的所有工作 一切都适用于常规函数 没有函数指针作为参数的函数 但我不
  • 注释处理工具<-检查有效注释

    I have ColumnMetadata index 1 ColumnMetadata index 2 ColumnMetadata index 3 我必须使用 APT 检查索引号是否唯一 我不知道该怎么做 我看不懂教程 一般我在网上找资
  • AAR 可以包含传递依赖吗? [复制]

    这个问题在这里已经有答案了 现在我有一个库项目 比如项目 Foo 它依赖于像 OkHttp 这样的库 现在 Foo 有一个 Maven 构建步骤 可以生成 AAR 并将其推送到公共位置 现在假设我有项目 B 我们将其称为 Bar Bar是一
  • Android JobScheduler 每天只运行一次

    我检查了 JobScheduler API 它可以从 Android API 级别 21 开始使用 我想安排一个需要互联网并且每天仅运行一次或可选每周运行一次的任务 如果成功执行 我没有找到关于这种情况的例子 有人能帮我吗 谢谢 针对您的问
  • 没有 Google Play 服务的设备的后备计划是什么

    目前 我正在将以前使用 jar 库的 Google 服务迁移到 Google Play 服务 谷歌广告移动 谷歌分析 谷歌云端硬盘 然而 在迁移指南中 Google 没有提到对于没有 Google Play 服务或没有最新的 Google
  • POJO 支持使用omnifaces 自动完成primefaces

    我正在尝试在我的项目中使用 primefaces 自动完成组件 以避免将特定转换器写入我尝试使用的每个列表对象全能面孔 http showcase omnifaces org converters ListConverter如建议的here
  • 如何在给定的纬度和经度处使用标记/覆盖项目启动地图意图?

    我有一个纬度和经度 我想打开以该点为中心的谷歌地图 所以我使用以下代码 Intent intent new Intent android content Intent ACTION VIEW Uri parse geo lat lng st
  • Android,Volley请求,响应阻塞主线程

    使用 Volley 处理较大响应时会发生一些不好的事情 String url AppHelper DOMAIN service pages profile update json this infoTextView setText getS
  • 如何在不显示父活动的情况下将一个全屏对话框片段替换为另一个全屏对话框片段?

    我有一个使用单个自定义 DialogFragment 类的活动 它的外观是数据驱动的 因此不同的调用看起来可能相当不同 它是 全屏 即 setStyle DialogFragment STYLE NO FRAME android R sty

随机推荐

  • JQuery Mobile:聚焦输入文本不尊重 z-index,出现在其他所有内容之上

    我有一个带有 jQ uery Mobile 的 Android Phonegap 应用程序 在 HTC Desire 上 如果输入框获得焦点 则无论上面有哪些元素 它始终会转到前面 您是否尝试应用CSS属性 webkit transform
  • iOS - UISlider 的自定义图像

    我想为 UISlider 轨道使用图像 我不希望拇指的左边有一种颜色 右边有另一种颜色 我只想要一张横跨整个赛道的静态图像 可能的 要将图像设置到滑块 您可以使用设置最小轨迹图像 设置最大轨迹图像方法 根据您的要求 将两者设置为同一图像 i
  • 适用于打字稿的编辑器和调试器

    我正在开发一个nodejs 项目 其中所有代码都是用打字稿编写的 它遵循微服务模式 每个微服务都是一个独立的项目 因此需要同时打开和调试许多项目 我尝试了 webstorm 和 Visual Studio 使用 NTVS 但对它们都不满意
  • PYQT5画线[重复]

    这个问题在这里已经有答案了 def init self super init self title Main menu self left 80 self top 80 self width 1500 self height 1000 se
  • Oracle XML:跳过不存在的节点

    我在将 xml 数据插入到 oracle 表中时遇到问题 这是我的 xml
  • 简单的 Kafka Consumer 未收到消息

    我是 Kafka 的新手 正在运行一个简单的 Kafka 消费者 生产者示例 如上所示Kafka消费者 https kafka apache org 0102 javadoc index html org apache kafka clie
  • 生成随机确定性有限自动机的算法是什么?

    DFA 必须具有以下四个属性 DFA 有 N 个节点 每个节点有 2 个传出转换 每个节点都可以从其他每个节点访问 从所有可能性中以完全一致的随机性选择 DFA 这是我到目前为止所拥有的 从 N 个节点的集合开始 选择一个尚未选择的节点 将
  • 使用委托和 Lambda 的奇怪行为

    作为在我正在开发的库中引入惰性格式化评估的一种方法 我定义了委托 public delegate string MessageFormatterDelegate string message params object arguments
  • 什么是Android UiThread(UI线程)

    有人可以向我解释一下 UI 线程到底是什么吗 在developer android com上它提到了runOnUiThread函数 公共最终无效runOnUiThread 可运行操作 从以下版本开始 API 级别 1 在 UI 线程上运行指
  • 如何让 NHibernate 停止使用 nvarchar(4000) 来插入参数字符串?

    我需要优化由域实体上的保存 插入查询 生成的查询 我已经使用 Fluent NHibernate 配置了 NHibernate 以下是 NHibernate 在插入用户对投票的响应期间生成的查询 exec sp executesql N I
  • 简洁表达数学公式的语法建议

    我正在 C 中开发功能域特定的嵌入式语言 以尽可能简洁 准确地将公式转换为工作代码 我在评论中发布了一个原型 大约有两百行长 现在我的语言看起来像这样 嗯 实际上看起来像这样 implies two nested loops j 0 N i
  • 如何阻止 GD2 在调整图像大小时洗掉颜色?

    我使用 CodeIgniter 1 7 开发了一个照片共享社区网站 成员上传的照片会自动调整为多种格式的大小 为此我使用 CodeIgniter Image Manipulation 类 该类内置于框架中 基本上是多个图像处理库的包装器 例
  • 如何在Android地图上的另一个图像中显示图像?

    我想在地图上的另一个图像中显示图像 like 这里红色的图像是不同的图像 而黑色的偶像图像是不同的 public Bitmap mergeBitmaps Bitmap manBitmap try Bitmap markerBitmap Bi
  • cakephp 3 显示没有时间的日期

    CakePHP 3 我有一个数据库字段 它是日期 不是日期时间也不是时间戳 当我显示 echo contact gt date 它会显示类似的内容2014 01 06 0 00 如何隐藏小时和分钟 I tried print this gt
  • Debian 9 + PHP7.0-FPM + NGINX 1.10.3-1 path_info 问题

    我正在使用 DigitalOcean Debian 9 PHP 7 0 NGINX 1 10 3 1 并尝试安装 Joomla CMS 但在第一个安装屏幕 example com installation index php 上 我注意到一
  • Selenium + Java 的 elementToBeClickable 问题

    所以 我有一个隐藏在警报下的元素 警报持续 10 秒 之后用户可以单击该元素 这是我处理这种情况的代码 WebElement create driver findElement By cssSelector div action menu
  • C# 根据 XSD 验证 XML [重复]

    这个问题在这里已经有答案了 可能的重复 使用 XSD 架构进行 Xml 验证 https stackoverflow com questions 572853 xml validation using xsd schema 我使用一些 C
  • 组合 ggplot2 对象时设置拼凑中的轴限制

    组合时ggplot2对象使用拼凑而成 https patchwork data imaginist com index html我希望能够有一个选项 可以轻松地为所有图设置一个选项 使其具有相同的 x 轴和 或 y 轴范围 reprex l
  • Busboy 文件上传中出现“Unexpected end of multipart form”错误

    我正在使用 Busboy 在 Node Express 应用程序中上传文件 我收到错误Unexpected end of multipart form和应用程序崩溃 每当我尝试治疗失眠的方法时 都没有效果 在显示 Busboy 不是构造函数
  • 创建 Uri uri 时应用程序崩溃

    package com example renu customlead import android content Context import android content ContextWrapper import android